Ограничить выбор select2 по группе?
Кто-нибудь придумал способ ограничить выбор select2 по группе?
Я надеюсь автоматически удалить любой выбор из той же группы, когда что-то из этой группы будет выбрано (эффективно ограничиваясь одним выбором на группу)
Я буду работать над чем-то и опубликую это здесь, если никто не опубликует хорошее решение до того, как я закончу.
2 ответа
Ответ Кевина Брауна был очень близок к тому, что я искал, но на самом деле я хотел автоматически отменить выбор любых выбранных опций из той же группы. Я получил это работает со следующим:
$("#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, так что это можно сделать в зависимости от того, как определена "группа". Если "группа" является <optgroup>
в стандарте <select>
просто нужно проверить, есть ли другие варианты в <optgroup>
были выбраны, и предотвратить текущий выбор на основе этого.
Select2 испускает select2:selecting
событие, когда делается выбор, и это событие можно предотвратить, вызвав preventDefault()
на это.
$("#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();
}
});