3

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

一旦选择了该组中的某些内容,我希望自动删除同一组中的任何选择(实际上限制为每组一个选择)

如果在我完成之前没有人发布好的解决方案,我会做一些事情并将其发布在这里。

4

2 回答 2

4

可以防止在 Select2 中进行选择,因此可以根据“组”的定义方式来完成。如果“组”<optgroup>在标准<select>中,则只需检查是否<optgroup>已选择了中的任何其他选项,并基于此阻止正在进行的选择。

Select2 在进行选择时会发出一个select2:selecting事件,并且可以通过调用preventDefault()来阻止该事件。

$("#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();
  }
});
于 2015-05-14T22:51:35.220 回答
1

凯文布朗的答案非常接近我正在寻找的内容,但我实际上想自动取消选择同一 optgroup 中的任何选定选项。我得到它与以下工作:

$("#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

于 2015-05-15T15:24:24.173 回答