Die hervorragende Antwort von @fmpwizard funktioniert für Select2 3.5.2 und niedriger, funktioniert jedoch nicht in 4.0.0 .
Select2 unterstützt seit sehr früh (aber vielleicht nicht so früh wie diese Frage) "Tagging": Hier können Benutzer ihren eigenen Wert hinzufügen, wenn Sie dies zulassen. Dies kann über die tags
Option aktiviert werden , und Sie können mit einem Beispiel in der Dokumentation herumspielen .
$("select").select2({
tags: true
});
Standardmäßig wird eine Option erstellt, die denselben Text wie der eingegebene Suchbegriff enthält. Sie können das verwendete Objekt ändern, wenn Sie es auf besondere Weise markieren möchten, oder das Objekt nach Auswahl aus der Ferne erstellen.
$("select").select2({
tags: true,
createTag: function (params) {
return {
id: params.term,
text: params.term,
newOption: true
}
}
});
select2:select
Die zusätzliche Eigenschaft dient nicht nur als leicht zu erkennendes Flag für das durch das Ereignis übergebene Objekt , sondern ermöglicht es Ihnen auch, die Option im Ergebnis etwas anders zu rendern. Wenn Sie also visuell signalisieren möchten, dass es sich um eine neue Option handelt, indem Sie " (neu) " daneben setzen, können Sie so etwas tun.
$("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;
}
});