98 votes

Champ de formulaire clair après sélection pour jQuery UI Autocomplete

Je suis l'élaboration d'une forme, et l'utilisation de jQuery UI Autocomplete. Lorsque l'utilisateur sélectionne une option, je veux la sélection de la pop dans un laps annexé à la société mère <p> balise. Ensuite, je veux le champ clair, plutôt que d'être rempli avec la sélection.

J'ai l'span apparaissant très bien, mais je ne peux pas obtenir le champ clair.

Comment annuler jQuery UI Autocomplete par défaut sélectionnez l'action?

Voici mon code:

var availableTags = ["cheese", "milk", "dairy", "meat", "vegetables", "fruit", "grains"];
$("[id^=item-tag-]").autocomplete({
    source: availableTags,

    select: function(){
        var newTag = $(this).val();
        $(this).val("");
        $(this).parent().append("<span>" + newTag + "<a href=\"#\">[x]</a> </span>");
    }
});

Simplement en faisant $(this).val(""); ne fonctionne pas. Ce qui est affolant, c'est que presque la fonction exacte fonctionne très bien si j'ignore la saisie semi-automatique, et il suffit de prendre action lorsque l'utilisateur tape une virgule en tant que tel:

$('[id^=item-tag-]').keyup(function(e) {
    if(e.keyCode == 188) {
        var newTag = $(this).val().slice(0,-1);
        $(this).val('');
        $(this).parent().append("<span>" + newTag + "<a href=\"#\">[x]</a> </span>");
    }
});

Le vrai résultat final est d'obtenir la saisie semi-automatique de travailler avec les sélections multiples. Si quelqu'un a des suggestions pour qu'ils seraient les bienvenus.

183voto

Nick Craver Points 313913

Ajouter à la fin de votre fonction pour effacer le champ et annuler l’événement  :)

Ceci empêchera la valeur mise à jour. Vous pouvez voir comment il fonctionne autour de la ligne 109 ici.

Le code là vérifie spécifiquement pour false :

21voto

user1128713 Points 106

Au lieu de retourner la valeur false que vous pourriez également utiliser Event.preventDefault ().

6voto

captahab Points 41

retourner false est nécessaire dans le rappel de sélectionner, de vider le champ. Mais si vous voulez contrôler à nouveau le champ, c'est-à-dire la valeur, vous devez appeler une fonction nouvelle pour sortir de l’interface utilisateur.

Peut-être vous avez une valeur prompt tels que :

Définissez-le comme valeurs de l’élément (sur focus nous définissons sur '').

5voto

Il fonctionne bien pour moi.

Après l’événement select, j’ai utilisé le changement de l’événement.

Je suis un débutant !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X