2016-12-27 44 views
0

我有幾個select2下拉列表(包含相同的選項),我需要每個選項只能選擇一次。Select2更新禁用選項只有一次

使用選擇2事件系統,每一個下拉菜單打開時,我去列表並禁用所有選擇的任何其他下拉菜單中的選項

$('body').on('select2:open', '.resCombo', function (event) { 
    var $el = $(event.target); 
    $el.find('option').removeAttr('disabled'); 
    $('.resCombo').not($el).find('option:selected').each(function (index,el) { 
     console.log($(el).val()); 
     $el.find('option[value="'+ $(el).val() +'"]').attr('disabled','disabled'); 
    }) 
    $el.trigger('change.select2'); 
}); 

它的偉大工程,我第一次改變在任何下拉菜單中的東西,但從來沒有在第二次嘗試。

+0

我認爲你需要這個淘汰賽https://codepen.io/DDN-Shep/pen/wBEEEQ – Noman

+0

@Noman寧願解決這個問題,而不添加其他的lib到項目中。 –

回答

1

Select2緩存禁用屬性,不聽它的變化。 它的快速解決方案是每次更改屬性時初始化select2。 他們對此功能有開放請求,您可以使用此修復程序,但它們尚未合併。

Link to pull request