У меня есть 2 списка. Когда я выбираю значение в первом, он обновляет параметры во втором списке. Только второй список - это Select2.
Я заставил его работать, но функция поиска Select2 не работает.
Если я проверяю DOM, я замечаю, что опции, сгенерированные Select2, не имеют текста. Из-за этого не работает поиск?
Вот мой код JS:
$('.category').change(function(event) {
var measure = $(this).parents('.row').find('.measure');
// Modify placeholder when searching
measure.prop('disabled', true).select2({placeholder: "Searching..."});
// Remove existing options of the list (of a previous usage)
measure.children('option').each(function(index, el) {
if ($(el).val().length > 0)
$(el).remove();
});
var DATA = 'tagcat=' + $(this).val();
$.ajax({
type : "GET",
url : $('.custom-table-container').data('search-js'),
data : DATA,
cache : false,
success : function(response) {
var data = JSON.parse(response);
// Update the measures list
measure.select2({
allowClear : true,
data : data.items,
escapeMarkup : function (markup) { return markup; },
templateResult : formatTag,
templateSelection: formatTagSelect
}).prop('disabled', false);
}
});
});
Мне удалось заставить поиск работать, добавляя вручную параметры HTML в список, но я потерял шаблон результатов ...
код:
$.ajax({
// ...
success : function(response) {
var data = JSON.parse(response);
data.items.forEach(function(tag) {
// create the option and append to Select2
var option = new Option(tag.name, tag.id, false, false);
measure.append(option);
});
measure.select2({
allowClear : true,
data : data.items,
escapeMarkup : function (markup) { return markup; },
templateResult : formatTag,
templateSelection : formatTagSelect
}).prop('disabled', false);
}
});
Как я должен кодировать это, чтобы иметь как шаблоны, так и поиск?