JavaScript — Select2 4.0 — Push-новая запись после создания

Я использую Select2 4.0.0-rc.1 в течение нескольких недель (используя ajax адаптер), и я пытаюсь найти способ «подтолкнуть» данные после того, как они были инициализированы.

В выпадающем списке у меня есть выбор

  • выберите запись в списке (используя ajax)
  • добавить бесплатную запись (используя createTag)
  • добавить новую запись

Если я выберу «добавить новую запись», я могу заполнить форму, и после сохранения новые данные должны быть показаны как выбранная запись.

Если я нажимаю данные с помощью select2_existing.select2( { data: data } ).val( 4 ); это работает, но ajax звонок больше не работает.

Я должен тогда

  1. уничтожить select2
  2. воссоздать его

Что позволит мне иметь мои новые данные и ajax адаптер работает.

Это можно сделать без цикла create-> data-> destroy-> create?

7

Решение

Вы должны быть в состоянии выдвинуть новую выбранную опцию, создав новую <option selected> тег с информацией, которую вы хотите отобразить.

<option value="id" selected="selected">text</option>

Как только вы добавите это <option> к оригиналу <select>вам нужно будет вызвать change событие, так что Select2 (и другие компоненты) знают, что значение изменилось.

$element.trigger("change");

Так что все вместе в JavaScript

var $element = $("select"); // the element that Select2 is initialized on

var $option = $("<option selected></option>"); // the new base option
$option.val(newOption.id); // set the id
$option.text(newOption.text); // set the text

$element.append($option); // add it to the list of selections
$element.trigger("change"); // tell Select2 to update
19

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]