2017-01-26 7 views
0

私はこれらの2つのイベントをキャッチする必要があります。jquery select2 multiselect:オプションが選択されているかどうかを確認するにはどうすればいいですか?

  • 最初のオプションは
  • すべてのオプションを選択するの選択が解除されている

理由がある - 私は内容に責任がある別のドロップダウンを(無効にすること最初のオプションが選択されたとき、または以前に選択されたすべての選択が解除されたとき)。

更新:

$('.projectSelector').on('change', function() { 
     var targetProject_id = $('#project-id :selected').val(); 
     updateParticpantDropdown(targetProject_id); 
    }); 

    function updateParticpantDropdown(selectedProjectId){ 

     $.ajax({ 
      type: "POST", 
      url: '/xx/projects/xx/'+ selectedProjectId, 
      dataType : "json", 
      success: function (response, status) { 
       if(status === "success") { 

        //console.log('success post'); 

        if(response.result == "error") { 

         alert(response.message); 

        }else if (response.result == "success"){ 

         var data = response.data; 

         $(".participantSelector").empty().select2({ 
          placeholder: "Click here to select participants for above selected project", 
          allowClear: false, 
          data: data 
         }); 

        } 
       } else if(status === "error") { 
        // Ajax Post call failed 
        console.log('fatal ajax post call failed'); 
       } 
      } 
     }); 
} 

これは私のAJAXの一部です。ドロップダウン '.projectSelector'から選択すると、マルチセレクション '.participantSelector'が更新されます。

これまでのところうまく動作します!

私が欲しいのは、 '.participantSelector'の最初の選択をキャッチして '.projectSelector'を無効にすることです。そして、もう一方の方法は、 '.participantSelector'で何も選択されていなければ '.projectSelector'をアクティブに設定します。 - ではなく選択と私の複数選択を形成

$('select').on('select2:select', function (evt) { 
    // Do something 
}); 

しかし、これはドロップダウンで選択に火を行います。私はこれを試してみましたドキュメントから

<select name="participant_id[]" multiple="multiple" class="form-control select2me participantSelector" required="required" id="participant-id"><option value=""></option></select> 

私のHTMLは次のようになります。

ところで、私は私の複数選択での選択に乗るこのエラーが表示される:

TypeError: b.dataAdapter is null

+0

あなたには、いくつかのHTMLを共有することができます:

のようなものを試してみてください?私たちがあなたにこのように手助けするのは、より簡単になります –

答えて

1

あなたがfirst()方法と、リストの最初の項目を取得することができます。 documentationを参照し、:selectedセレクタで選択したオプションを取得できます。 documentationを参照してください。

$('#select').on('change', function() { 
    var first = $(this).find('option').first().val(); 
    var none = $(this).find('option:selected').length; 

    if ($(this).val() == first) { 
     alert('First item selected!'); 
    } else if (none == 0) { 
     alert('All items deselected!'); 
    } 
}); 
+0

すべてのオプションが選択されていないときに、どこでイベントを処理していますか? –

関連する問題