أنا أحاول فتح تحديد بعد النقر فوق الزر ، لكنه لا يعمل. إذا قمت بإدخال وتنبيه () بعد المشغل ، يتم فتحه ...
(باستخدام v1.0 المختار مع jquery)
مثال:
<select id="select">
<option value="1">a</option>
<option value="2">b</option>
<option value="3">c</option>
</select>
<br>
<button onclick="$('#select').trigger('chosen:open'); ">Press this button to open (doesnt work) </button>
<button onclick="$('#select').trigger('chosen:open'); alert('ups!');">Press this button to open (work???)</button>
<script>
$(document).ready(function() {
$('#select').chosen();
});
</script>
مثال في: http://jsfiddle.net/EArg6/28/
لا يعمل أي من الزرين بالنسبة لي في Fiddle (في Safari).
ما المتصفح / الإصدار الذي تستخدمه؟
لقد اختبرت ذلك باستخدام:
الزر الأول لا يعمل
الزر الثاني يفتح قائمة الخيارات (يغلق فقط عندما أغلق مربع "التنبيه").
عند النقر فوق الزر ، يتلقى Chosen الحدث chosen:open
. ومع ذلك ، يستمر الحدث في الظهور في DOM ويكتشف Chosen على الفور نقرة على عنصر غير المختار النشط ... لذلك يغلقه. منطقي؟
إذا كنت تعمل مع JS المضمنة ، فإن أسهل حل هو استخدام setTimeout
للخروج من مكدس الأحداث الحالي:
onClick="setTimeout(function(){ $('#select').trigger('chosen:open'); }, 0)"
من شبه المؤكد أنك لا يجب أن تستخدم JS المضمنة. لا يزال بإمكانك استخدام setTimeout
إذا كنت تريد ، ولكن مجرد إيقاف فقاعة الحدث يجب أن يكون جيدًا بدرجة كافية.
$('button').on("click", function(evt){
evt.stopPropagation();
$('#select').trigger('chosen:open');
});
لقد قمت بتحديث كمارك بكود العمل هذا: http://jsfiddle.net/EArg6/33/
شكرا @ pfiller
شكرًا pfiller ،
التعليق الأكثر فائدة
عند النقر فوق الزر ، يتلقى Chosen الحدث
chosen:open
. ومع ذلك ، يستمر الحدث في الظهور في DOM ويكتشف Chosen على الفور نقرة على عنصر غير المختار النشط ... لذلك يغلقه. منطقي؟إذا كنت تعمل مع JS المضمنة ، فإن أسهل حل هو استخدام
setTimeout
للخروج من مكدس الأحداث الحالي:من شبه المؤكد أنك لا يجب أن تستخدم JS المضمنة. لا يزال بإمكانك استخدام
setTimeout
إذا كنت تريد ، ولكن مجرد إيقاف فقاعة الحدث يجب أن يكون جيدًا بدرجة كافية.لقد قمت بتحديث كمارك بكود العمل هذا: http://jsfiddle.net/EArg6/33/