私は多くのことを試しましたが、何も機能していないようです。
JQueryとChosenプラグインを使用しています。
私が試した方法:
var select = jQuery('#autoship_option');
select.val(jQuery('options:first', select).val());
jQuery('#autoship_option').val('');
jQuery('#autoship_option').text('');
jQuery('#autoship_option').empty('');
jQuery("#autoship_option option[value='']").attr('selected', true);
選択すると、常にアクティブな自動配送オプションが表示されます。選択をクリアすることができません。
選択ボックスは次のとおりです。
<select id="autoship_option" data-placeholder="Choose Option..."
style="width: 175px;" class="chzn-select">
<option value=""></option>
<option value="active">Active Autoship</option>
</select>
Chosenに精通し、1つのオプションで選択ボックスをクリアできる人はいますか? (将来、より多くのオプションがあります。
select
要素の値を空の文字列に設定するis正しい方法です。ただし、それはルートselect
要素のみを更新します。カスタムchosen
要素は、ルートselect
が更新されたことを認識しません。
chosen
が変更されたことをselect
に通知するには、chosen:updated
をトリガーする必要があります。
$('#autoship_option').val('').trigger('chosen:updated');
または、最初のオプションが空の文字列かどうかわからない場合は、これを使用します:
$('#autoship_option')
.find('option:first-child').prop('selected', true)
.end().trigger('chosen:updated');
ここにあるドキュメント (「動的に選択された更新」というタイトルのセクションを参照)を読んでください。
P.S。古いバージョンのChosenでは、若干異なるイベントが使用されます。
$('#autoship_option').val('').trigger('liszt:updated');
最初のオプションで十分です: http://jsfiddle.net/sFCg3/
jQuery('#autoship_option').val('');
ただし、ボタンのclick
やjsfiddleのようなready
またはドキュメントのようなイベントでこれを実行していることを確認する必要があります。
また、オプションタグの値属性が常にあることを確認してください。そうでない場合、一部のブラウザはval()
で常に空を返します。
編集:
Chosenプラグインの使用方法を明確にしたので、電話する必要があります
$("#autoship_option").trigger("liszt:updated");
インターフェースを更新するために値を変更した後。
これを試して、最新の選択済みJSで更新された選択ボックスを再ロードしてください。
$("#form_field").trigger("chosen:updated");
http://harvesthq.github.io/chosen/
選択されたドロップダウンをAjaxで新しくロードされた選択ボックスで更新します。
これを試して:
$("#autoship_option option[selected]").removeAttr("selected");
私はこれを使用します:
$('idSelect').val([]);
iE、Safari、Firefoxでテスト済み
これはfindよりも効果的です。
$('select').children('option').first().prop('selected', true)
$('select').trigger("chosen:updated");
var config = {
'.chosen-select' : {},
'.chosen-select-deselect' : {allow_single_deselect:true},
'.chosen-select-no-single' : {disable_search_threshold:10},
'.chosen-select-no-results': {no_results_text:'Oops, nothing found!'},
'.chosen-select-width' : {width:"95%"}
}
for (var selector in config) {
$(selector).chosen(config[selector]);
}
上記の設定を使用し、class='chosen-select-deselect'
を適用して、手動で選択を解除し、値を空に設定します
または、すべてのコンボでオプションの選択を解除する場合は、次のような構成を適用します
var config = {
'.chosen-select' : {allow_single_deselect:true},//Remove if you do not need X button in combo
'.chosen-select-deselect' : {allow_single_deselect:true},
'.chosen-select-no-single' : {disable_search_threshold:10},
'.chosen-select-no-results': {no_results_text:'Oops, nothing found!'},
'.chosen-select-width' : {width:"95%"}
}
for (var selector in config) {
$(selector).chosen(config[selector]);
}
$('#autoship_option').val('').trigger('liszt:updated');
デフォルトのオプション値を''
に設定します。
このリンクで利用可能な選択された更新済みjQueryで使用する必要があります: https://raw.github.com/harvesthq/chosen/master/chosen/chosen.jquery.min.js 。
最後にjquery.min
がchosen.jquery.min
と異なることを見つけるために丸1日過ごしました
Chromeバージョン49
常にこのコードが必要です
$("select option:first").prop('selected', true)
これが選択した古いバージョンに適用されるかどうかはわかりませんが、現在のバージョン(v1.4.1)ではオプション$('#autoship_option').chosen({ allow_single_deselect:true });
があります。これにより、選択した名前の横に「x」アイコンが追加されます。 「選択」フィールドをクリアするには「x」。
PS:アイコンが表示されるように、chosen.cssに従って正しい場所に「chosen-Sprite.png」があることを確認してください。
jQuery("#autoship_option option:first").attr('selected', true);
jQuery('.chosen-processed').find('.search-choice-close').click();
値に関係なく最初のオプションを選択する必要がある場合(最初のオプション値が空でない場合があります)、これを使用します。
$('#autoship_option').val($('#autoship_option option:first-child').val()).trigger("liszt:updated");
最初のオプションの値を取得し、選択されたとおりに設定してから、選択時に更新をトリガーします。したがって、リストの最初のオプションにリセットするように機能します。
これを試して、(空の)ドロップダウンをリセットできます
$("#autoship_option").click(function(){
$('#autoship_option').empty(); //remove all child nodes
var newOption = $('<option value=""></option>');
$('#autoship_option').append(newOption);
$('#autoship_option').trigger("chosen:updated");
});
上記のソリューションから、何も私のために働いた。これはうまくいきました:
$('#client_filter').html(' '); //this worked
何故ですか? :)
$.ajax({
type: 'POST',
url: xyz_ajax,
dataType: "json",
data : { csrfmiddlewaretoken: csrftoken,
instancess : selected_instances },
success: function(response) {
//clear the client DD
$('#client_filter').val('').trigger('change') ; //not working
$('#client_filter').val('').trigger('chosen:updated') ; //not working
$('#client_filter').val('').trigger('liszt:updated') ; //not working
$('#client_filter').html(' '); //this worked
jQuery.each(response, function(index, item) {
$('#client_filter').append('<option value="'+item.id+'">' + item.text + '</option>');
});
$('#client_filter').trigger("chosen:updated");
}
});
}
Jqueryプラグインchosen
を使用している場合、ドロップダウンのコンテンツを更新またはクリアするには、次を使用します。
$('#dropdown_id').empty().append($('< option>'))
dropdown_id.chosen().trigger("chosen:updated")
chosen:updated
イベントは、更新されたコンテンツに基づいてre-build
自体になります。
新しいChosenライブラリはリストを使用しません。私は次を使用しました:
document.getElementById('autoship_option').selectedIndex = 0;
$("#autoship_option").trigger("chosen:updated");
まったく同じ要件がありました。ただし、jqueryで単純に空の文字列を設定してドロップダウンリストをリセットしても機能しません。更新もトリガーする必要があります。
Html:
<select class='chosen-control'>
<option>1<option>
<option>2<option>
<option>3<option>
</select>
Jquery:
$('.chosen-control').val('').trigger('liszt:updated');
使用している選択したコントロールのバージョンに基づいて、以下の構文を使用する必要がある場合があります。
$('.chosen-control').val('').trigger("chosen:updated");
HTML:
<select id="autoship_option" data-placeholder="Choose Option..."
style="width: 175px;" class="chzn-select">
<option value=""></option>
<option value="active">Active Autoship</option>
</select>
<button id="rs">Click to reset</button>
JS:
$('#rs').on('click', function(){
$('autoship_option').find('option:selected').removeAttr('selected');
});
選択に新しい値を割り当てる必要があると思うので、選択をクリアしたい場合は、おそらく値= ""を持つものに割り当てたいと思うでしょう。私はあなたが値を空の文字列に割り当てることでそれを取得できると思うので、.val( '')
次のような単純な追加トリガーの変更:
$('#selectId').val('').trigger('change');