3つの問題があります。
- フォームのリセットにより値が変更されても、Select2コントロールの表示は更新されません。
value
「すべて」オプションには属性がありません。
- 「すべて」オプションは無効になっています。
まず、このsetTimeout
関数を使用して、フォームのリセットが完了した後にコードが確実に実行されるようにすることをお勧めします。
ボタンがクリックされたときにコードを実行できます。
$('#searchclear').click(function() {
setTimeout(function() {
// Code goes here.
}, 0);
});
または、フォームがリセットされたとき:
$('form').on('reset', function() {
setTimeout(function() {
// Code goes here.
}, 0);
});
使用するコードについて:
「すべて」オプションが無効になっているため、フォームのリセットでは選択された値にはなりません。したがって、選択した値になるように明示的に設定する必要があります。これを行う方法は、Select2の「val」関数を使用することです。また、「すべて」オプションには属性がないためvalue
、その値は「すべて」というテキストと同じです。したがって、選択した回答でthtsigmaによって指定されたコードを使用する必要があります。
$("#d").select2('val', 'All');
属性value=""
を「すべて」オプションに追加する場合は、DanielDenerによって提供されたコードを使用できます。
$("#d").select2('val', '');
「すべて」オプションが無効になっていない場合は、Select2を強制的に更新する必要があります。この場合、次を使用できます。
$('#d').change();
注:Lenartによる次のコードは選択をクリアする方法ですが、「すべて」オプションが選択されることはありません。
$('#d').select2('data', null)