Select2 добавить текст новой опции пуст - PullRequest
0 голосов
/ 18 октября 2019

Я использую плагин select2 для выбора нескольких пользователей через ajax, и на той же странице я могу добавить нового пользователя в базу данных.

То, что я хотел бы, это после создания новогоПользователь в базе данных автоматически добавляет опцию к select2.

Плагин инициализируется следующим образом:

$('#users').select2({
    ajax:
    {
        url: 'ajaxFetchUsers',
        type: 'POST',
    },
    cache: true,
    templateSelection: function(item)
    {
        return item.name;
    },
});

И я добавляю нового пользователя следующим образом:

$.post('ajaxAddUser', { name: name, email: email }, function(response)
{
    var newOption = new Option(name, response.id, true, true);
    $('#users').append(newOption).trigger('change');
});

Как видите, после получения ответа я пытаюсь добавить в раскрывающийся список новую опцию, содержащую нового пользователя и уже выбранного!

Хотя пользователь, кажется, добавлен, он пуст, как вы можете видетьздесь: enter image description here

1 Ответ

0 голосов
/ 01 ноября 2019

Решено .

Способ, который я решил, может быть неправильным, но я не мог понять с помощью плагина Select2, как правильно добавить новую опцию программно. Решение состоит в том, чтобы вручную изменить HTML с помощью jQuery.

var newOption = new Option(name, response.id, false, true);
$('#users').append(newOption).trigger('change');

setTimeout(function()
{
    $('.select2-selection__choice').last().html('<span class="select2-selection__choice__remove" role="presentation">×</span> ' + name);
}, 300);
...