2012-07-19 12 views
15

मुझे जावास्क्रिप्ट के माध्यम से Chosen dropdown खोलने की जरूरत है ताकि उपयोगकर्ताओं को इसे दिखाने के लिए चयन पर क्लिक करने की आवश्यकता न हो, यह कैसे किया जा सकता है?जावास्क्रिप्ट के माध्यम से चुने जाने के लिए कैसे?

उत्तर

0

इस समस्या का हल,

बस सुनिश्चित chzn का चयन कर अपने चयन की आईडी है ।

 $('#chzn-select').change(function(event) 
     { 
      $('.chzn-drop').css('left', 0); 
     }); 
+0

को बदलते प्रतीत होते हैं क्योंकि यह गलत है क्योंकि यह चुने गए मार्कअप पर" सक्रिय "कक्षाओं को सेट नहीं करता है। Techfoobar आपको एक अच्छा संकेत दिया - हालांकि "क्लिक" घटना इस स्थिति में उपयोग करने के लिए और अधिक उपयुक्त होगा। – biphobe

+0

धन्यवाद, लेकिन क्लिक काम नहीं करता है। कोशिश करो। – Tzvi

+0

यह काम करता है, मैंने अभी इसे चेक किया है। याद रखें कि आपको मुख्य कंटेनर (.chzn-container> .chzn-single) में रहने वाले एंकर पर एक क्लिक ईवेंट ट्रिगर करना होगा। – biphobe

16

आप ऐसा करके जे एस के माध्यम से एक चुना सलेक्ट बॉक्स खोल सकते हैं:

$('#<id-of-your-select>_chzn').trigger('mousedown'); 

जहां <id-of-your-select> अपने <select> तत्व की आईडी है।

पूर्व के लिए: यदि आपके <select> तत्व <select id="foo" ...> की तरह है, तो इसके बाद के संस्करण कोड हो जाएगा:

$('#foo_chzn').trigger('mousedown'); 
+0

हाय धन्यवाद, के लिए यह मेरे लिए काम नहीं करता है: <चुनिंदा नाम = "chzn-चयन []" id = डेटा-प्लेसहोल्डर "chzn-चुनें" = "" शैली = "चौड़ाई: 350 पीएक्स; दिशा: आरटीएल "एकाधिक वर्ग =" chzn-select-create-option chzn-rtl "tabindex =" 8 "> जेएस कोड है: <इनपुट प्रकार =" बटन "onclick =" console.log ($ ('# chzn-select_chzn')। ट्रिगर ('mousedown')); "value =" clicktoOpen "> – Tzvi

+0

आपको बहुत धन्यवाद, मैं इसे हमेशा के लिए समझने की कोशिश कर रहा हूं। – anataliocs

+0

आप चट्टानों को भयानक हैं! –

2

@ Tzvi के जवाब मूल्यवान है में घटना है कि तुम्हें चुना ट्रिगर करने के लिए कोशिश कर रहे हैं में इतना है कि यह एक चयन के बाद खुला रहता है:

chzn ड्रॉप एक विकल्प पर क्लिक करें उन के बाद खोला रहेगी बनाया गया है (आईई: एक बार में कई चयन करना)। मुझे इस एक सा विस्तार करने के लिए अनुमति दें (चुने हुए 1.0 के लिए अद्यतन, वैसे):

$('#selectbox').change(function() { 
    $('#selectbox_chosen .chosen-drop').css('left', '0'); 
}); 

$('html').click(function() { 
    $('#selectbox_chosen .chosen-drop').css('left', ''); 
}); 

$('#selectbox_chosen .chosen-drop').click(function(e) { 
    e.stopPropagation(); 
}); 

मूलतः यह कुछ सीएसएस "सक्रिय" वर्ग द्वारा आम तौर पर जगह में है कि अधिभावी द्वारा खुले रहने के लिए चुना लटकती बाध्य करती है। फिर हमारे पास कुछ क्लिक ईवेंट हैं जो ड्रॉपडाउन से बाहर कहीं भी क्लिक करते हैं, तो इसे पूर्ववत कर देंगे। मेरे लिए पूरी तरह से काम किया।

संपादित करें: वैसे, अगर तुम सच में, जे एस के माध्यम से ड्रॉप डाउन ट्रिगर करते हैं चुना 1.0 के एपीआई का उपयोग करें:

$('#selectbox').trigger('chosen:open') 

मूल प्रश्न के संदर्भ में, यह आप को खोलने के लिए अनुमति देगा चयन के बाद बॉक्स को फिर से खोलें या फिर से खोलें। हालांकि, चयन के बाद बॉक्स को खुला नहीं रखा जाएगा (एक पल के लिए बंद किए बिना)।

4

आप अपने कोड में नीचे दी गई दो पंक्तियां जोड़ सकते हैं, यह आपके चुने हुए हमेशा खुले रहेंगे। यह मेरे लिए काम किया।

list_start आपकी चुनिंदा तत्व आईडी है।

("#list_start").trigger('chosen:open'); 
$('.chosen-drop').css('left', 0); 
1

अद्यतन Chosen jquery plugin में स्टॉपप्रॉपैगेशन के साथ ठीक काम करता है।

$("#selectbox").trigger("chosen:open"); \t \t \t 
 
event.stopPropagation();

$(document).ready(function() { 
 
    $("#selectbox").chosen({}); 
 
    $("button").click(function() { 
 
    $("#selectbox").trigger("chosen:open"); 
 
    event.stopPropagation(); 
 
    }); 
 
});
#selectbox { 
 
    width: 140px 
 
}
<link href="http://harvesthq.github.io/chosen/chosen.css" rel="stylesheet" /> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="http://harvesthq.github.io/chosen/chosen.jquery.js"></script> 
 

 

 
<select id="selectbox"> 
 
    <option val="option1">Option 1</option> 
 
    <option val="option2">Option 2</option> 
 
    <option val="option3">Option 3</option> 
 
    <option val="option4">Option 4</option> 
 
    <option val="option5">Option 5</option> 
 
    <option val="option6">Option 6</option> 
 
</select> 
 

 

 
<button>Trigger Chosen</button>

8

यह बहुत अजीब है, लेकिन मैं इस सवाल का जवाब टाइमआउट

उपयोग कर रहा है यह किसी तरह का समय-समाप्त करने के लिए पहले शायद क्योंकि मेरे तत्व क्लोन है neet लगता है आशा है कि उपयोगी हो आर दूसरों

setTimeout(function(){ firstElement.trigger("chosen:open"); }, 100); 
+0

सेटटाइमआउट मेरे लिए क्या काम करता है। – HischT

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

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