按组限制 select2 选择?

Posted

技术标签:

【中文标题】按组限制 select2 选择?【英文标题】:Limit select2 selections by group? 【发布时间】:2015-07-26 15:10:35 【问题描述】:

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

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

如果在我完成之前没有人发布好的解决方案,我将在此处发布。

【问题讨论】:

【参考方案1】:

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

当进行选择时,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();
  
);

【讨论】:

很好,只需稍作改动即可使其正常工作:var data = evt.params.args.data;【参考方案2】:

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

【讨论】:

在这里查看演示blogs.ptutorial.com/…

以上是关于按组限制 select2 选择?的主要内容,如果未能解决你的问题,请参考以下文章

基于 select2 插件的自做效果

maximumSelectionSize 在 Select2 中不起作用

选择后保持焦点 Select2

Select2 选项背景颜色与 html 选择相同

Select2 多选 - 以编程方式取消选择/取消选择项目

如何获取select2的值:取消选择