JSFiddle
フィドルにselect
3 s (1 ブランク)を設定しました。から手動でoption
切り替えると、リスナーは正常に起動します。foo
bar
change
ここでいくつかの回答に投稿されselect
たコードを使用して JSをリセットすると、新しく選択された空白のオプションに対してイベントが発生しません。さらに、ボタンをクリックする前に選択されたオプションを選択すると、イベントも発生しません。 .change
reset
onchange
select
の値は上記の関数で変更されていると確信していますが、これはこのfiddleで確認できますが、select
のonchange
イベントは単に発生しません。
onchange
、onclick
、oninput
イベントも試しましたが、役に立ちませんでした。現在、MutationObserver を使用するか、レンダリングされた選択した要素を DOM から削除して別の要素を作成するかを考えていますが、おそらく考えすぎです。どんな助けでも大歓迎です。
また:
この回答は私を大いに助けてくれました: jQuery Chosen reset
この回答は役に立ちませんでした:選択したプロトタイプの javascript 選択ボックスで onchange イベントを発生させる方法は?
jsfiddle.net が削除された場合の将来の参照用のコード:
HTML
<div id="wrapper">
<select id="chosen">
<option value="!!EMPTY VALUE!!"></option>
<option value="foo">foo</option>
<option value="bar">bar</option>
</select>
</div>
<br>
<button id="reset">Reset</button>
JS
$(function() {
$('#chosen').chosen();
$('#wrapper').on('change', '#chosen', function() {
console.log('onchange: ' + this.value);
});
$('#reset').click(function() {
$("#chosen").val('').trigger("liszt:updated"); //doesn't work
//$("#chosen").prop('selectedIndex', 0).trigger("liszt:updated"); //doesn't work either
console.log('reset: ' + $('option:selected').val());
});
});