Я прочитал много сообщений об этой опции: добавление нового значения в список select2, но все, что я пробовал, не работает.Вот мой код:
$('#profession').select2({
tags: true,
minimumInputLength: 1,
placeholder: 'Search for a profession',
createSearchChoice: function (term, data) {
if ($(data).filter(function () {
return this.text.localeCompare(term) === 0;
}).length === 0) {
return { id: term, text: term };
}
},
createTag: function (params) {
return {
id: params.term,
text: params.term,
newOption: true
}
},
templateResult: function (data) {
var $result = $("<span></span>");
$result.text(data.text);
if (data.newOption) {
$result.append(" <em>(new)</em>");
}
return $result;
},
ajax: {
url: root_url + "profession/listProfession",
type: "post",
dataType: 'json',
delay: 250,
data: function (params) {
return {
q: params.term
};
},
results: function (data, page) { return { results: data.results} },
processResults: function (data, page) {
return {
results: data
};
},
cache: true
}
});
Когда я набираю «Plu», выберите «2», чтобы отобразить «Сантехник», и я могу добавить «Сантехников1234» (например), но если я наберу «BLABLA» (у меня нет профессии, начните с BLA), яне могу добавить значение BLABLA.И я не понимаю почему.Поле select2 находится в режиме начальной загрузки, я удалился из таблицы.
Спасибо.
РЕДАКТИРОВАТЬ 1:
Я пытался удалить часть AJAX.Без ajax я могу ввести значение и выбрать его.Но я загружаю данные из ajax.Вот код:
$('#profession').select2({
tags: true,
createTag: function (params) {
return {
id: params.term,
text: params.term,
newOption: true
}
},
templateResult: function (data) {
var $result = $("<span></span>");
$result.text(data.text);
if (data.newOption) {
$result.append(" <em>(new)</em>");
}
return $result;
}
});
Как мне смешать эти 2 кода, пожалуйста?