web-dev-qa-db-ja.com

選択した更新が機能しない

ドロップダウンを選択しました。オプションのコンテンツを変更し、選択したトリガーを呼び出しました:更新しましたが、ドロップダウンを再構築しません。これは私の更新です

<select name="shortcode" style="width: 150px; display: none;" class="chosen_select chzn-done" id="select_shortcode">
   <option value=""></option> 
   <option value="7183">7183</option>
   <option value="7983">7983</option>
</select>

そして、これは選択されたドロップダウンです(最後の2つを再構築して削除する必要があります<li>

<ul class="chzn-results">
   <li id="select_shortcode_chzn_o_1" class="active-result" style="">7183</li>
   <li id="select_shortcode_chzn_o_2" class="active-result" style="">7983</li>
   <li id="select_shortcode_chzn_o_3" class="active-result" style="">8208</li>
   <li id="select_shortcode_chzn_o_4" class="active-result" style="">8308</li>
</ul>

これは私のjQueryコードです:

$('#select_shortcode_mask').change(function(){
    var shortcode_mask = $('#select_shortcode_mask').val();
    $('#select_shortcode').empty();
    var shortcode = {"7X83":["7183","7983"],"8x08":["8208","8308"]};
    $('#select_shortcode').append("<option value=''></option>");
    if(jQuery.isArray(shortcode[shortcode_mask])){
            $.each( shortcode[shortcode_mask], function( subkey, subvalue ) {
                $('#select_shortcode').append("<option value='"+subvalue+"'>"+subvalue+"</option>");
            })
    } else {
        var full_shortcode = ["7183","7983","8208","8308"];
        if(jQuery.isArray(full_shortcode)){
            $.each(full_shortcode, function( subkey, subvalue ) {
                $('#select_shortcode').append("<option value='"+subvalue+"'>"+subvalue+"</option>");
            })
        }
    }
    $("#select_shortcode").trigger("chosen:updated");
});

解決しよう:私は古いバージョンを使用しているので、

$("#select_shortcode").trigger("liszt:updated");

だからダンプ^^

26
Tien Hoang

選択したプラグインを頻繁に使用していますが、この問題に何度も遭遇します。

通常は.trigger("chosen:updated")を使用して解決できます。しかし、ほんの1分前に、このメソッドは機能しなくなりました。混乱しているので、2つのjsファイルで同じ関数を使用します。たとえば、a.jsb.jsは、a.jsでは機能しますが、b.jsでは機能しません。なんでかわからない…もう迷っちゃう!

それで、私は再びapiをチェックします。私は.chosen("destroy")を見つけて、刺激を受けました!

そして私はそれが究極のソリューションだと思います:それを破壊して再構築します。

$('.chosen').chosen("destroy").chosen();

うるさいですか? :p

7
Kaiyu Lee

変更関数は、要素「#select_shortcode_mask」の変更を呼び出します。選択リストのID: "#select_shortcode"

3
Hydrospanners

私のやり方はこれです...

$timeout(function() {
  $('#CampSrchId').trigger('chosen:updated');
}, 1000);

OR

window.setInterval(function() {
  $('#CampSrchId').trigger('chosen:updated');
}, 1000);      
1
Asad Ali Khan

コード:

$('#test')
  .val(1)
  .trigger('liszt:update')
  .removeClass('chzn-done');

$('#test_chzn').remove();


$("#test").chosen({
  width: "220px",
  no_results_text: "test"
});
0
Steven Delgado

使った

_$("select").chosen({ width: "100%" });//chosen hack
_

.trigger("chosen:updated");を使用する場合と同様に、これは問題を解決するようには見えませんでした。見た目はハックですが、うまく機能します。

0
Jamie Paterson