Saya mencoba membuka pilih setelah mengklik tombol, Tetapi tidak berhasil. Jika saya menyisipkan dan mengingatkan() setelah pemicu itu terbuka ...
(Menggunakan v1.0 yang dipilih dengan jquery)
contoh:
<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>
contoh di: http://jsfiddle.net/EArg6/28/
Tidak ada tombol yang berfungsi untuk saya di Fiddle Anda (di Safari).
Browser/versi apa yang Anda gunakan?
Saya mengujinya dengan:
Tombol pertama tidak berfungsi
Tombol kedua membuka daftar opsi (hanya untuk menutup ketika saya menutup kotak "peringatan").
Ketika Anda mengklik tombol, Terpilih menerima acara chosen:open
. Namun, acara terus menggelembungkan DOM dan Terpilih segera mendeteksi klik pada elemen yang bukan Terpilih aktif ... sehingga menutupnya. Masuk akal?
Jika Anda bekerja dengan JS sebaris, solusi termudah adalah menggunakan setTimeout
untuk keluar dari tumpukan peristiwa saat ini:
onClick="setTimeout(function(){ $('#select').trigger('chosen:open'); }, 0)"
Anda hampir pasti tidak boleh menggunakan JS sebaris. Anda masih dapat menggunakan setTimeout
jika Anda mau, tetapi menghentikan gelembung acara saja sudah cukup.
$('button').on("click", function(evt){
evt.stopPropagation();
$('#select').trigger('chosen:open');
});
Saya telah memperbarui biola Anda dengan kode kerja ini: http://jsfiddle.net/EArg6/33/
terima kasih @pfiller
Terima kasih @pfiller , solusi dan penjelasan itu menyelamatkan saya dari mulas!
Komentar yang paling membantu
Ketika Anda mengklik tombol, Terpilih menerima acara
chosen:open
. Namun, acara terus menggelembungkan DOM dan Terpilih segera mendeteksi klik pada elemen yang bukan Terpilih aktif ... sehingga menutupnya. Masuk akal?Jika Anda bekerja dengan JS sebaris, solusi termudah adalah menggunakan
setTimeout
untuk keluar dari tumpukan peristiwa saat ini:Anda hampir pasti tidak boleh menggunakan JS sebaris. Anda masih dapat menggunakan
setTimeout
jika Anda mau, tetapi menghentikan gelembung acara saja sudah cukup.Saya telah memperbarui biola Anda dengan kode kerja ini: http://jsfiddle.net/EArg6/33/