按组限制 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 选择?的主要内容,如果未能解决你的问题,请参考以下文章