J'ai une forme qui utilise le plugin UI JQuery Autocomplete UI, http://jqueryui.com/demos / autocomplete / , qui fonctionne tous doux, sauf lorsque vous appuyez sur la touche Entrée pour sélectionner un élément de la liste SAOCOMPOMPLETE, il soumet le formulaire. P>
J'utilise cela dans un site WebForms .NET WebForms, il peut donc y avoir une manipulation JavaScript associée au formulaire que .NET injecte qui remplace les trucs jQuery (je spécule ici). P>
7 Réponses :
Un moyen est de gérer la touche Appuyez sur la touche et l'ignorez s'il s'agit de la touche ENTER. P>
Mais je veux seulement ignorer la touche Entrée si elle est appuyée lors de la sélection d'une option dans la liste des autocomplètes. Si l'utilisateur ne se concentre pas sur la liste des options d'autocomplete, je do i> veut le formulaire à soumettre.
Vous pouvez utiliser un gestionnaire d'événements dessus.
$("#searchTextBox").keypress(function(e) { var code = (e.keyCode ? e.keyCode : e.which); if(code == 13) { //Enter keycode return false; } });
Bon exemple! Essayez trop ... si (code == $ .ui.keycode.enter) {retour false; } ... code>. Regardez une Soufe API.JQUERYUI.COM/JQUERY.UI.KEYCODE .. JZM Merci
JQuery Normalise E.Quelle code>, donc
var code = E.Quel code> suffira. Donc, cela peut être simplifié à
si (E.Qui === 13) renvoie false; code> ou même
retour e.qui! == 13; code>
$("#autocomplete_field_id").keypress(function(event){ var keycode = (event.keyCode ? event.keyCode : event.which); if (keycode == '13') { event.preventDefault(); event.stopPropagation(); } });
La réponse Ace Post m'a aidé à résoudre mon problème. Bien que vous puissiez remarquer que le code ACE fournit doit exister avant $ («entrée»). Autocomplete (*****) code>, sinon vous ne recevriez aucun effet. p>
Si vous souhaitez toujours que la touche Entrée soumise, une fois la sélection de la sélection automatique effectuée,
if (evt.keyCode === 13 && !$('.ui-autocomplete').is(':visible')) { $('.ui-button:first').click(); } evt.stopPropagation();
Celui-ci ne fonctionne pas pour moi, car le moment où l'événement passe à ma fonction de rappel, l'autocomplete n'est déjà pas visible.
Vous pouvez essayer ceci: Ceci désactivera la touche ENTER uniquement dans la zone de texte d'entrée p> p>
C'est une excellente solution: vous ne jouez pas avec le code Autocomplete ou l'événement JQuery du tout: videz simplement la clé de retour. Merci!
Une ligne de code: 3 choses différentes ici que la réponse acceptée: p>
événement.Quel code>, donc pas besoin de tester pour
event.keycode code> et
événement.Quel code>. Li>.
$. ui.keycode code>, ce qui le rend plus lisible. li>