JQuery UI autocomplete - Masquer la liste après hiting entrer
J'ai une entrée. J'utilise le Jquery UI autocomplete proposer des suggestions pour l'utilisateur. Permet image que j'ai dans ma liste de 3 éléments: item1, item2, item3. Ce que je cherche, c'est la liste de fermeture lorsque l'utilisateur appuie sur entrée. Par exemple, si l'utilisateur n'entre dans "il", tous les 3 éléments seront affichés. Dans ce cas, si il frappe entrer, je tiens la liste à être fermé. Je n'arrive pas à comue une solution pour que. J'espère que quelqu'un peut vous aider. Des acclamations. Marc.
Mon code html:
<input id="search" type="input" />
Mon js:
$(function() {
var availableTags = [
"item1","item2","item3"
];
$("#search").autocomplete({
source:availableTags,
minLength: 0
});
});
Vous devez vous connecter pour publier un commentaire.
http://jsfiddle.net/vXMDR/2/
close
de la méthode docs.jquery.com/UI/Autocomplete#method-closeclose
méthode comme par @shanabus réponse.Voici la solution: http://jsfiddle.net/vXMDR/3/
Laissez-moi savoir si vous avez des questions.
La magie est la liaison la saisie semi-automatique mode de fermeture à pression de touche
Mise à JOUR
$("#search").keypress(function(e){
lie keypress de la #recherche de l'élément de la fonction spécifiée, en passant dans leevent
objet. Vous pouvez également écrire ce que$("#search").on('keypress', function(e) {...
if (!e) e = window.event;
garantit que si un événement valide n'a pas été transmis, il définite
à la fenêtre en cours.objet de l'événement.Enfin,
if (e.keyCode == '13'){
tests événement keycode valeur est égale à la touche "enter". Pour une liste des touches valides, voir ici.Voici la documentation de la saisie semi-automatique méthode close - http://docs.jquery.com/UI/Autocomplete#method-close
hide()
éléments n'est pas la même ni documentés de la fermeture de la fonctionnalité saisie semi-automatique.$('#search').autocomplete({foo: bar}).closest('form').submit(function () { $('#search').autocomplete('close'); })
J'ai modifié le shanabus solution en outre, pour permettre le temps de retard en raison de la fonction de rappel.
http://jsfiddle.net/vXMDR/46/
C'est un simple hack pour stocker de savoir si ou de ne pas afficher la saisie semi-automatique comme une valeur booléenne. (Je suis en utilisant setTimeOut pour créer le scénario où il y a une attente, c'est le scénario de problème, pas la solution.)
Puis lorsque la touche entrée est pressée le drapeau est réglé sur faux. N'importe quelle autre touche réactive le drapeau.
Il est possible de le faire de manière plus élégante, j'en suis sûr, mais ce n'résoudre le problème de la liste déroulante, peuvent apparaître plus tard.
Je suis tombé sur cette question et n'a pas été en mesure d'utiliser la méthode close() parce que ma saisie semi-automatique est en cours de re-rendus sur chaque charge de l'épine Dorsale de la vue. En tant que tel, une nouvelle saisie semi-automatique de l'élément a été ajouté au DOM et ceux qui sont coincés autour de même si le joint d'entrée de l'élément a été soufflé loin et recréé. Inutile de saisie semi-automatique d'éléments étaient à l'origine de quelques problèmes, mais le pire est quand l'utilisateur appuie sur entrée assez rapidement, je voudrais aller à travers cette séquence:
Noter que les suggestions affiché à l'étape 5 sont désormais liée à une saisie semi-automatique conteneur qui n'est plus associé à mon champ de saisie, de sorte que tous les événements comme appuyer sur esc ou en cliquant ailleurs sur l'écran, ne fait rien. Les suggestions sont coincé là jusqu'à ce qu'un rechargement complet de la page qui apparaît.
J'ai fini par résoudre cela par le stockage de la mainContainerId de la plus récente saisie semi-automatique de l'élément et de l'enlever manuellement.