10
votes

JQuery Select2 Tag sur flou

J'utilise Select2 pour créer un champ d'adresse e-mail de style Gmail dans mon application. Cela fonctionne très bien, à l'exception d'un cas: lorsque l'utilisateur Type d'une adresse e-mail et ne met pas d'espace ou de virgule après cela, et ne touche pas l'entrée ou l'onglet. Par exemple, s'ils ne font que taper une adresse de messagerie, utilisez ensuite la souris pour sélectionner le champ suivant dans le formulaire, l'adresse e-mail qu'ils saisit disparaissent.

J'ai un exemple jsfiddle Voici qui illustre le problème.

Voici comment je confecte select2 sur mon entrée cachée: < Pré> xxx

est là un moyen pour moi de configurer Select2 afin que Onblur il prend juste tout ce qui reste et n'est pas actuellement une balise et en fait un?


0 commentaires

4 Réponses :


1
votes

Je n'ai pas vraiment compris ce que vous essayez de faire ici parce que vous parlez de courriels: xxx pré>

mais vous pouvez essayer cela à la place: P>

var splitted = element.val().split(",");
for(var i=0,z=splitted.length;i<z;i++)
    data.push({id: splitted[i], text: splitted[i]});


1 commentaires

J'ai supprimé ces paramètres car ils ne sont pas pertinents pour le problème à la main et mis à jour mon violon et mon code ci-dessus.



3
votes

J'avais un formulaire avec Select2 (Mode Tag) et un bouton Soumettre. Par défaut lorsque l'utilisateur tape une balise d'utilisateur, sans sélectionner la balise à partir de la liste déroulante ou en appuyant sur l'une des touches de commande de déclenchement, la saisie de l'utilisateur sera perdue car le plug-in ferme l'objet DOM de l'entrée généré sur l'événement BLUR.

Ma solution rapide à ce problème. C'était de pirater la fonction de flou du plugin et d'ajouter les lignes suivantes: xxx

une fois que la fonction floue est appelée, le code ci-dessus vérifie si la saisie de l'utilisateur. S'il y a quelque chose de déclenche, sélectionnez l'événement et envoie l'objet requis. L'objet que je passe convient uniquement à Select2 en mode de marquage et si vous utilisez Select2 V3.2, cette ligne peut être insérée au début de la fonction BLUR de AbstractSlect2 à la ligne 1311. J'espère que cela vous donne une idée sur la façon de personnaliser le widget selon vos besoins.


2 commentaires

Pendant que je n'aime pas avoir à modifier moi-même la bibliothèque pour obtenir cette fonctionnalité, c'est la seule réponse qui fonctionne jusqu'à présent. La seule modification supplémentaire que j'ai faite était de passer un "nofocus: vrai" à travers la méthode "OnSélectionnez", puis à la vérification inférieure pour cela et non appeler "Focussearch", car il est vraiment ennuyeux d'entrer du texte, cliquez sur un autre champ de texte. et ensuite faire concentrer l'ancienne boîte Select2.


Merci à @ramin et @davertron! Pour certaines raisons, je ne peux pas utiliser la dernière version de SELECT2 (un clic extérieur ne fermez rien) Donc, je reviens à V3.2 et à faire les deux hacks de vous. Était assez délicat parce que j'ai accédé uniquement à une version minifiée. Quoi qu'il en soit, ici la dernière gis du piratage, pour d'autres personnes: gist.github.com/hartor/6689203 < / a>



19
votes

Ceci est maintenant pris en charge dans la version 3.3 de la bibliothèque SELECT2 à l'aide de l'option "SELECTONNLUR".


2 commentaires

Cela ne semble pas fonctionner avec SELECT2 4.0.1-RC.1: $. Fn.select2.default.set ("selectonblur", "vrai");


L'option a été renommée selectonclose



3
votes

du Documentation à partir de 4.0.3:

$('select').select2({
  selectOnClose: true
});


0 commentaires