【发布时间】:2015-07-26 15:10:35
【问题描述】:
有没有人想出一种方法来限制 select2 的分组选择?
我希望在选择同一组中的某些内容后自动删除该组中的任何选择(实际上限制为每组一个选择)
如果在我完成之前没有人发布好的解决方案,我将在此处发布。
【问题讨论】:
标签: jquery jquery-select2 select2-rails
有没有人想出一种方法来限制 select2 的分组选择?
我希望在选择同一组中的某些内容后自动删除该组中的任何选择(实际上限制为每组一个选择)
如果在我完成之前没有人发布好的解决方案,我将在此处发布。
【问题讨论】:
标签: jquery jquery-select2 select2-rails
可以防止在 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;
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
【讨论】: