5

class と class_attr クラスには 2 つのオプションがあります: A と B class_attr には多くのオプションがあります: aa、bb、cc、dd、ee、...

私の質問は、ユーザーが A を選択した場合に実装する方法です。選択された max_selected は 5 つのオプションのみであり、ユーザーが B に変更された場合、選択された max_selected は 3 つのオプションのみです。

私はこのようなことをしようとしています:

$(".class").change(function(){
        var code = $(this).val();
        if(code == 1){
           $(".class_attr").chosen({max_selected_options: 5});
            }
        else{
               $(".class_attr").chosen({max_selected_options: 3});          
        }
        $(".class_attr").trigger("liszt:updated");
});

しかし、これはうまくいかないようです。class_attr のオプション リストは 1 回だけ設定され (最初に選択されたクラスの max_selected_options 値が 5 か 3 かに関係なく)、最初の時間以降は max_selected_options が更新されることはありません。ありがとう〜

4

2 に答える 2

6

これを試して:

$('.class').chosen().change(function () {

    var code = $(this).val();
    var maxOptions = code == 1 ? 5 : 3;

    $(".class_attr").chosen('destroy').chosen({ max_selected_options: maxOptions });
});

初期化された後はオプションを変更できないように見えるため、もう一度作成する前に破棄する必要があります。

[編集] から選択したインスタンスにアクセスできます$(".class_attr").data('chosen')
次に、インスタンスでオプションを直接更新できます。

$('.class_attr').data('chosen').max_selected_options = 2;
$('.class_attr').trigger("chosen:updated");
于 2013-08-13T18:03:35.950 に答える