L' excellente réponse fournie par @fmpwizard fonctionne pour Select2 3.5.2 et versions antérieures, mais elle ne fonctionnera pas dans 4.0.0 .
Depuis très tôt (mais peut-être pas aussi tôt que cette question), Select2 a pris en charge le «marquage»: où les utilisateurs peuvent ajouter leur propre valeur si vous leur permettez. Cela peut être activé via l' tags
option, et vous pouvez jouer avec un exemple dans la documentation .
$("select").select2({
tags: true
});
Par défaut, cela créera une option qui a le même texte que le terme de recherche qu'ils ont entré. Vous pouvez modifier l'objet utilisé si vous souhaitez le marquer d'une manière spéciale ou créer l'objet à distance une fois qu'il est sélectionné.
$("select").select2({
tags: true,
createTag: function (params) {
return {
id: params.term,
text: params.term,
newOption: true
}
}
});
En plus de servir d'indicateur facile à repérer sur l'objet transmis via l' select2:select
événement, la propriété supplémentaire vous permet également de rendre l'option légèrement différemment dans le résultat. Donc, si vous vouliez signaler visuellement le fait qu'il s'agit d'une nouvelle option en mettant " (nouveau) " à côté, vous pouvez faire quelque chose comme ça.
$("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;
}
});