Select2 Dropdown Динамически добавляет, удаляет и обновляет элементы из
Это сводит меня с ума! Почему can not Select2 реализует четкие методы или примеры на своей странице, как делать простые манипуляции с CRUD на Select2:)
У меня есть select2, который получает данные от вызова ajax.
<input id="valueg" type="hidden" style="width: 300px;" data-placeholder="Select a Conference" />
$("#valueg").select2({
data: conferences,
allowClear: true,
initSelection: function (element, callback) {
var data = { id: element.val(), text: element.val() };
callback(data);
}
}).on("change", function (e) {
// show data in separate div when item is selected
});
Может ли кто-нибудь предоставить четкий способ удаления и добавления элемента из Select2.
Например:
Я добавляю элемент через вызов ajax в db и просто хочу добавить параметр Select2 и установить его как выбранный.
Я удаляю элемент с помощью ajax в db и хочу удалить параметр из Select2 и не выбрал никакой опции.
Ответы
Ответ 1
Из вашего примера я вижу, что вы подключили Select2 плагин к скрытому элементу. Кроме того, вы используете вызов Ajax для заполнения результатов, поэтому в этом случае, если вам нужно добавить новую опцию в список, вы просто вызываете:
$('#valueg').select2('val', 'YOUR_VALUE');
В случае использования элемента select в качестве контейнера единственным способом, который я нашел, является повторная инициализация плагина с новыми параметрами... Что-то вроде этого:
var el = $('select[name="type"]', '#details-form');
var temp = el.select2('val'); // save current value
temp.push(NEW_VALUE); // append new one
var newOptions = '<option value="1">1</option><option value="2">2</option>';
el.select2('destroy').html(newOptions ).select2().select2('val', temp);
Ответ 2
У меня была такая же проблема. Вот как я его решил
Это не имеет ничего общего с select2, манипулирование собой, похоже, работает для меня
$("#lstService").empty();
for(var i=0;i<data.length;i++){
$("#lstService").append('<option value="'+data[i].service_id+'">'+data[i].service_name+'</option>');
}
Ответ 3
Я сделал это следующим образом:
var $select2 = $('#valueg').select2(); // getting the select2
var item = 'xyz'; // item to be added
$select2.val(function(i, val) { // val can take function as parameter
val = val || []; // if value is null init val as an array
val.push(item); // add the new item
return val;
}).trigger("change"); //refresh
Надеюсь, что поможет
Ответ 4
Слишком поздно... но это мое решение для людей, которые все еще имеют эту проблему:
html = "";
jQuery("#select_2 option").each(function()
{
html += '<option value="'+jQuery(this).attr("value")+'">'+jQuery(this).text()+'</option>';
});
html += '<option value="NEWVALUE">NEW OPTION</option>';
jQuery("#select_2").html(html);
Ответ 5
В моем случае ключевое, что нужно добавить после манипулирования базовым выбором:
$selectlist.trigger( "изменить" );//$selectlist - основной элемент select.
Select2 работает вокруг события изменения при выборе, поэтому вызов "изменить" обновляет параметр, отображаемый в списке выбора. 2.