Je veux avoir une liste déroulante avec un ensemble de valeurs mais aussi permettre à l'utilisateur de "sélectionner" une nouvelle valeur qui n'y figure pas.
Je vois que select2 prend en charge cela si vous l'utilisez en tags
mode, mais y a-t-il un moyen de le faire sans utiliser de balises?
jquery-select2
John John
la source
la source
Réponses:
Pour la version 4+, vérifiez cette réponse ci-dessous par Kevin Brown
Dans Select2 3.5.2 et ci-dessous, vous pouvez utiliser quelque chose comme:
(extrait d'une réponse sur la liste de diffusion select2, mais ne trouve pas le lien maintenant)
la source
selectOnBlur: true
volonté fera le travail s'il vous plaît voir: stackoverflow.com/questions/25616520/…tags: []
aveccreateSearchChoice
.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 .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é.
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.la source
Juste pour garder le code en vie, je poste le code de @rrauenza Fiddle à partir de son commentaire .
HTML
jQuery
la source
Étant donné que beaucoup de ces réponses ne fonctionnent pas dans la version 4.0+, si vous utilisez ajax, vous pouvez demander au serveur d'ajouter la nouvelle valeur en option. Cela fonctionnerait donc comme ceci:
[{"text":" my NEW option)","id":"0"}]
la source
Il y a une meilleure solution je pense maintenant
définir simplement le balisage sur vrai sur les options de sélection?
sur https://select2.org/tagging
la source
Amélioration de la réponse @fmpwizard:
la source
Je viens de tomber sur ça de Kevin Brown. https://stackoverflow.com/a/30019966/112680
Tout ce que vous avez à faire
v4.0.6
est d'utiliser letags: true
paramètre.la source
Dans la plupart des cas, nous devons comparer les valeurs avec un registre insensible. Et ce code retournera false, ce qui conduira à la création d'enregistrements en double dans la base de données. De plus String.prototype.localeCompare () n'est pas pris en charge par le navigateur Safary et ce code ne fonctionnera pas dans ce navigateur;
remplacera mieux à
la source
Merci pour l'aide, j'ai utilisé le code ci-dessous dans Codeigniter II et j'utilise la version: 3.5.2 de select2.
la source