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' tagsoption, 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;
}
});