jQuery UI Autocomplete comportement. Comment faire une recherche en texte libre sur entrer?
première question (et, espérons-le, hésitant mais ma seule)
J'utilise le jQuery UI Autocomplete. Voici un exemple de code à reproduire mon problème.
var suggestions = ["C", "Clojure", "JavaScript", "Perl", "PHP"];
$("#autocomplete").autocomplete({
source: suggestions
});
Lorsqu'un utilisateur tape 'J' elles seront présentées avec "Clojure' et 'JavaScript' comme des suggestions.
J'ai omis de Java à partir de cette liste, si l'utilisateur souhaite effectuer une recherche pour Java, ils type "Java", appuyez sur la touche entrée, mais le formulaire ne s'y soumettent pas. Si vous ajoutez un espace de la 'JavaScript' suggestion disparaît et le formulaire peut être envoyé en appuyant sur la touche entrée.
Je suis de la création d'une recherche libre, je veux que les utilisateurs soient en mesure de rechercher en appuyant sur entrer, même si il y a des suggestions disponibles.
$("#autocomplete").keypress(function(event) {
alert(event.keyCode);
if (event.keyCode=='13') $this.closest('form').submit();
});
J'ai essayé ci-dessus en pensant que je pouvais détecter manuellement un bouton-pression de touche et de soumettre le formulaire, mais l'alerte affiche toutes les clés sont détectés à l'EXCEPTION de présenter ce qui semble être supprimée par la saisie semi-automatique.
Toute aide est grandement appréciée! Merci.
Vous devez vous connecter pour publier un commentaire.
Mise à JOUR
J'ai dû faire quelques changements, mais ce code fonctionne très bien sur mon côté après l'avoir fait. Tout d'abord, l'e.keycode courriel.mot de code. Je ne pense pas que le cas de l'importance, mais il le fait. Aussi, assurez-vous de ne pas citer le 13 lorsque vous vérifiez le mot de code pour être le bouton enter. Il ne fonctionnera pas correctement si vous le faites. Voici le nouveau code:
La touche de fonction devrait ressembler à ci-dessous, et vous pouvez également la chaîne de la saisie semi-automatique et pression de touches de fonctions pour le rendre plus facile sur vous. Ci-dessous le code devrait fonctionner.
J'ai eu un problème similaire, le jquery-ui widget de saisie semi-automatique des feux de l'événement select lorsque l'utilisateur sélectionne une suggestion de la liste, si la suggestion sélectionnée a été cliqué ou sur la touche enter est enfoncée. Mais il n'a rien fait si l'utilisateur a tapé le texte et appuyé sur la touche entrée sans en sélectionnant un élément dans la liste. Quand cela arrive, j'ai besoin de faire une recherche.
Il était facile d'ajouter un
keypress
gestionnaire d'événements, mais il a tiré si une sélection a été faite ou non. J'ai donc ajouté une variable,didSelect
, pour maintenir l'état de sélection.Voici la solution complète:
});
À l'aide de l'INTERFACE de saisie semi-automatique du plugin version 1.8.5:
Look pour ce morceau de code
"cas d'.ENTRÉE:cas d'.NUMPAD_ENTER:un.menu.de l'élément.is(":visible")&&c.preventDefault();"
et de supprimer ou mettre en commentaire.
Essentiellement ce qui a été dit ci-dessus, mais à partir de la version actuelle du plugin.
acclamations
Pete
C'est ce que j'ai fait
De saisie semi-automatique supprime soumettre, mais cela a fonctionné comme une solution de contournement pour moi:
J'ai eu le même problème, et a été la pensée de l'utilisation de validation pour ce faire, mais à la fin, ma solution est beaucoup plus facile que d'autres solutions sur cette page:
Faire un champ de saisie, tapez le texte, nommé
#input
et un caché d'entrée nommé#hiddeninput
. Votre recherche-backend devrez utiliser la valeur de#hiddeninput
.À l'intérieur de votre saisie semi-automatique, définissez la valeur de #hiddeninput à la demande.durée: (j'ai mis ceci à l'intérieur
$.ajax({ success: })
)Maintenant, votre recherche sera effectuée sur ce que l'utilisateur a tapé jusqu'à ce qu'il sélectionne quelque chose à partir des suggestions de la liste.
Ici, j'ai utilisé la saisie semi-automatique de recherche pour une étudiante. Si l'utilisateur appuie sur ENTRÉE, le formulaire devra se soumettre, même si rien n'a été sélectionné dans la liste. La 'réponse' événement de mise à jour de la valeur d'un champ caché avec le premier élément de la liste. Ils pourraient également cliquez sur ou sélectionnez-le dans la liste.