按组限制 select2 选择?
Limit select2 selections by group?
有没有人想出一种方法来限制select2按组选择?
我希望在从同一组中选择某项后自动删除该组中的任何选择(有效地限制每组一个选择)
我会做一些事情,如果在我完成之前没有人post是一个好的解决方案,我会post在这里。
可以防止在 Select2 中进行选择,因此这可以根据 "group" 的定义方式来完成。如果 "group" 是标准 <select>
中的 <optgroup>
,只需检查是否已选择 <optgroup>
中的任何其他选项,并防止 in -在此基础上进行选择。
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();
}
});
Kevin Brown 的回答与我要找的非常接近,但实际上我想从同一选项组中自动取消选择任何选定的选项。我得到它与以下工作:
$("#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
有没有人想出一种方法来限制select2按组选择?
我希望在从同一组中选择某项后自动删除该组中的任何选择(有效地限制每组一个选择)
我会做一些事情,如果在我完成之前没有人post是一个好的解决方案,我会post在这里。
可以防止在 Select2 中进行选择,因此这可以根据 "group" 的定义方式来完成。如果 "group" 是标准 <select>
中的 <optgroup>
,只需检查是否已选择 <optgroup>
中的任何其他选项,并防止 in -在此基础上进行选择。
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();
}
});
Kevin Brown 的回答与我要找的非常接近,但实际上我想从同一选项组中自动取消选择任何选定的选项。我得到它与以下工作:
$("#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