按组限制select2选择?

时间:2015-05-14 20:35:51

标签: jquery jquery-select2 select2-rails

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

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

如果没有人在我完成之前发布一个好的解决方案,我会在这里发布一些内容并发布。

2 个答案:

答案 0 :(得分:3)

可以防止在Select2中进行选择,因此可以根据&#34; group&#34;被定义为。如果是&#34;组&#34;是标准<optgroup>中的<select>,只需检查是否已选择<optgroup>中的任何其他选项,并阻止正在进行的选择基于此。

选择2在进行选择时会发出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();
  }
});

答案 1 :(得分:1)

Kevin Brown的回答非常接近我所寻找的,但我实际上想要从同一个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