Ограничить выбор 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();
  }
});
Другие вопросы по тегам