El excellente réponse fourni par @fmpwizard fonctionne pour Select2 3.5.2 et inférieur, mais il ne fonctionnera pas en 4.0.0 .
Depuis très longtemps (mais peut-être pas aussi tôt que cette question), Select2 supporte le "tagging" : les utilisateurs peuvent ajouter leur propre valeur si vous les y autorisez. Ceci peut être activé par le biais de l'option tags
et vous pouvez jouer avec l'option un exemple dans la documentation .
$("select").select2({
tags: true
});
Par défaut, cela crée une option dont le texte est identique à celui du terme de recherche qu'ils ont saisi. Vous pouvez modifier l'objet utilisé si vous cherchez à le marquer d'une manière particulière, 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 de drapeau facile à repérer sur l'objet passé par le biais de la select2:select
la propriété supplémentaire vous permet également de rendre l'option légèrement différente dans le résultat. Ainsi, si vous souhaitez signaler visuellement le fait qu'il s'agit d'une nouvelle option en mettant " (nouveau) "à côté, vous pourriez 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;
}
});
1 votes
Select2 n'a jamais fonctionné pour moi, du moins createSearchChoice n'a jamais fonctionné pour moi dans la version 4.0.3, et je ne voulais pas que mes utilisateurs attendent la fin de l'ajax pour retourner le même mot-clé, donc j'ai dû déployer ma propre bibliothèque, je la partage seulement parce que je pense qu'elle pourrait aider d'autres personnes qui sont encore confuses comme je l'étais, s'il vous plaît ne votez pas si vous n'êtes pas d'accord avec ma réponse : github.com/razzbee/tagcomplete