按组限制 select2 选择?

Limit select2 selections by group?

有没有人想出一种方法来限制select2按组选择?

我希望在从同一组中选择某项后自动删除该组中的任何选择(有效地限制每组一个选择)

我会做一些事情,如果在我完成之前没有人post是一个好的解决方案,我会post在这里。

可以防止在 Select2 中进行选择,因此这可以根据 "group" 的定义方式来完成。如果 "group" 是标准 <select> 中的 <optgroup>,只需检查是否已选择 <optgroup> 中的任何其他选项,并防止 in -在此基础上进行选择。

Select2 在进行选择时发出 select2:selecting 事件,可以通过 calling preventDefault() on it.

阻止此事件
$("#mySelect").on("select2:selecting", function (evt) {
  var data = evt.params.data;
  var $element = $(data.element);

  // check if any options in the group are selected
  if ($element.parent("optgroup").find(":selected").length) {
    evt.preventDefault();
  }
});

Kevin Brown 的回答与我要找的非常接近,但实际上我想从同一选项组中自动取消选择任何选定的选项。我得到它与以下工作:

$("#my-select").on("select2-selecting", function (event) {
    $(event.object.element).parent("optgroup").find(":selected").attr('selected', false);
    $("#my-select").trigger('change');
});

注意:我使用的是 Select2 3.5.2