2017-01-26 204 views
0

我需要捕捉這兩個事件:jquery select2多選:如何檢查選項是否被選中?

  • 第一個選項被選中
  • 所有選項都取消

理由是 - 我想禁用另一個下拉列表(負責內容我的多重選擇)當選擇第一個選項或取消選擇所有先前選擇。

更新:

$('.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'設置爲活動狀態。

我的HTML看起來像這樣:

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

從我試過這個文檔:

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

但這火選擇在下拉 - 但不是一個選擇形成我多選。

順便說一下,我在多選得到選擇顯示此錯誤:

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

當所有選項未被選中時,您在哪裏處理事件? –

相關問題