Select2 只更新一次禁用的选项

Select2 updates disabled options only once

我有几个 select2 下拉列表(包含相同的选项),我需要每个选项只能选择一次。

使用 select2 事件系统,每次打开下拉菜单时,我都会浏览列表并禁用在任何其他下拉菜单中选择的所有选项

$('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');
});

我第一次在任何下拉菜单中更改某些内容时效果很好,但第二次尝试时却没有。

Select2 缓存禁用 属性 并且不监听它的变化。 快速修复是在每次更改 属性 时初始化 select2。 他们对此功能有一个开放的请求,你可以使用这个修复,虽然他们还没有合并它。

Link to pull request