Отличный ответ предоставляется @fmpwizard работ по выбор2 3.5.2 и ниже, но это не будет работать в 4.0.0 .
С самого начала (но, возможно, не так рано), Select2 поддерживал «тегирование»: когда пользователи могут добавлять свои собственные значения, если вы им разрешите. Это можно включить с помощью этой tags
опции, и вы можете поиграть с примером в документации .
$("select").select2({
tags: true
});
По умолчанию это создаст вариант с тем же текстом, что и введенный поисковый запрос. Вы можете изменить используемый объект, если хотите пометить его особым образом, или создать объект удаленно после того, как он будет выбран.
$("select").select2({
tags: true,
createTag: function (params) {
return {
id: params.term,
text: params.term,
newOption: true
}
}
});
Помимо того, что он служит легко заметным флажком на объекте, проходящем через select2:select
событие, дополнительное свойство также позволяет вам визуализировать параметр несколько иначе в результате. Итак, если вы хотите визуально обозначить тот факт, что это новая опция, поставив рядом с ней « (новый) », вы можете сделать что-то вроде этого.
$("select").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;
}
});