2013-01-24 18 views
9

टैबबिंग करते समय खोलने के लिए फोकस को कैप्चर करना हम वर्तमान में Chosen Dropdown Plugin का उपयोग कर रहे हैं जो कि एक मामूली समस्या के अलावा, शानदार है। जब हम एक ड्रॉपडाउन का उपयोग कर रहे हैं, यदि आप 'चुने गए' नियंत्रण में टैब करते हैं, तो वास्तविक ड्रॉपडाउन भाग नहीं दिखाया जाता है। हालांकि, प्लगइन को एकाधिक 'चयन' पर लागू करते समय, यह प्रकट होता है।jQuery चुना गया प्लगइन:

प्रलेखन और गिटहब मुद्दों के माध्यम से होने के कारण, टैब ऑर्डरिंग और फोकस करने के संबंध में बहुत से उल्लेख हैं, लेकिन ऐसा कुछ भी नहीं जो अपेक्षाकृत सरल आवश्यकता से संबंधित है; टैबबिंग करते समय फोकस प्राप्त करते समय ड्रॉपडाउन प्रदर्शित करें।

तो यह मानते हुए कि यह कार्यक्षमता प्लगइन का हिस्सा नहीं है, क्या एंकर टैग के फोकस को कैप्चर करने का कोई विकल्प है?

$('.chzn-single').focus(function(e){ 
    alert('I should be focused!') 
});  

अब तक, मैं सफल नहीं हुआ हूं और सोच रहा था कि किसी अन्य ने इस मुद्दे का अनुभव किया है या नहीं। आप इस jsfiddle कि समस्या

उत्तर

8
  1. आप खोज इनपुट thats अंदर conainer चुना, नहीं एंकर तत्व के लिए ध्यान केंद्रित घटना का ट्रैक रखने चाहिए दर्शाता है की जाँच कर सकते हैं, उसके बाद चुने कंटेनर के लिए mousedown घटना ट्रिगर - कि घटना है यह जब एक लटकती

  2. आप प्रतिनिधि घटनाओं दृष्टिकोण का उपयोग करने गतिशील रूप से जोड़ा तत्वों के लिए ईवेंट हैंडलर बाध्य करने के लिए की जरूरत है खोलने को सुनता है कि (jQuery 1.7.1 के लिए और 'जी' विधि पहले तुम सिर्फ उपयोग कर सकते हैं)

  3. आपको यह जांचने की भी आवश्यकता है कि कंटेनर सक्रिय है या नहीं वर्तमान में, पुनरावर्ती कॉल से बचने के लिए (जब चुना लटकती खोला जाता है - खोज इनपुट फिर से ध्यान केंद्रित किया जाएगा)

 
$('body').on('focus', '.chzn-container-single input', function() { 
    if (!$(this).closest('.chzn-container').hasClass('chzn-container-active')) 
     $(this).closest('.chzn-container').trigger('mousedown'); 
     //or use this instead 
     //$('#select').trigger('liszt:open'); 
}); 

यहाँ के बजाय $(this).closest('.chzn-container').trigger('mousedown'); आप भी प्लगइन के आंतरिक घटना गति प्रदान कर सकते jsfiddle

काम कर रहा है: $('#select').trigger('liszt:open');

+0

बेवकूफ अब काम नहीं कर रहा है। शायद आप [cdnjs '] (http://cdnjs.cloudflare.com/ajax/libs/chosen/1.0/chosen.jquery.js) फ़ाइलों का उपयोग बाहरी के रूप में कर सकते हैं? – Jawa

+0

@ जावा आप सही हैं इसे "चुने गए" जेएस प्लगइन का उपयोग किया जाता है जो अब प्रश्न में इस्तेमाल किए गए लिंक द्वारा उपलब्ध नहीं है। मैंने आपके द्वारा उल्लिखित सीडीएन का उपयोग करके jsfiddle को अपडेट किया है, इसमें चयन नियंत्रण के लिए थोड़ा और वर्ग था - मैंने उन्हें तसवीर में अपडेट किया। – paulitto

+0

बहुत बहुत धन्यवाद! मैं इसका उपयोग कर समाप्त हुआ: $ (दस्तावेज़) .on ("फोकस", "। चुना गया-कंटेनर-एकल इनपुट", फ़ंक्शन() {$ (यह) .closest ('चयनित-कंटेनर-एकल') नहीं। ("। चुना गया-कंटेनर-सक्रिय")। ट्रिगर ('mousedown');}); – colinbashbash

संबंधित मुद्दे