Y a-t-il un événement dans Jquery qui ne se déclenche que si l'utilisateur appuie sur le bouton Entrée dans une zone de texte? Ou tout plugin qui peut être ajouté pour l'inclure? Sinon, comment pourrais-je écrire un plugin rapide qui ferait cela?
javascript
jquery
jquery-events
Cliquez Upvote
la source
la source
e.keyCode
pour certaines touches, mieux à utilisere.which
, cela garantira que vous gérerez le même bouton sur chaque navigateurla source
Voici un plugin pour vous: (Fiddle: http://jsfiddle.net/maniator/CjrJ7/ )
la source
$
variable pour le plugin n'est pas une bonne idée car elle peut provoquer des conflits.$("#myInput").bind('click, onEnter', myCallback);
et que cela fonctionne sans avoir besoin d'autre chose?voici un plugin jquery pour le faire
pour l'utiliser, incluez le code et configurez-le comme ceci:
jsfiddle ici http://jsfiddle.net/VrwgP/30/
la source
func.apply(this)
, de cette façon, dans la fonction de rappel, vous pouvez utiliserthis
normalement pour accéder à l'élément sur lequel l'événement a été déclenché.e.preventDefault(); e.stopPropagation();
intérieur duif (e.keyCode)
bit.Il convient de noter que l'utilisation de
live()
dans jQuery est déconseillée depuis la version1.7
et a été supprimée dans jQuery1.9
. Au lieu de cela, l'utilisation deon()
est recommandée.Je suggérerais fortement la méthodologie suivante pour la liaison, car elle résout les défis potentiels suivants:
document.body
et en passant $ selector comme deuxième argumenton()
, les éléments peuvent être attachés, détachés, ajoutés ou supprimés du DOM sans avoir à gérer les événements de nouvelle liaison ou de double liaison. En effet, l'événement est attaché àdocument.body
plutôt que$selector
directement, ce qui signifie qu'il$selector
peut être ajouté, supprimé et ajouté à nouveau et ne chargera jamais l'événement qui lui est lié.off()
avanton()
, ce script peut vivre soit dans le corps principal de la page, soit dans le corps d'un appel AJAX, sans avoir à vous soucier d'événements double-liaison accidentels.$(function() {...})
, ce script peut à nouveau être chargé soit par le corps principal de la page, soit dans le corps d'un appel AJAX.$(document).ready()
n'est pas renvoyé pour les requêtes AJAX, alors qu'il le$(function() {...})
fait.Voici un exemple:
la source
Si votre entrée est
search
, vous pouvez également utiliser l'on 'search'
événement. Exemple.
la source
Code HTML:-
Code de script Java
Votre formulaire n'a pas de bouton d'envoi par défaut
la source
Une autre variation subtile. J'ai opté pour une légère séparation des pouvoirs, j'ai donc un plugin pour activer la capture de la touche entrée, puis je me lie simplement aux événements normalement:
Et puis en cours d'utilisation:
Cette variante vous permet d'utiliser la délégation d'événements (pour vous lier à des éléments que vous n'avez pas encore créés).
la source
Je n'ai pas pu
keypress
déclencher l' événement pour le bouton Entrée, et je me suis gratté la tête pendant un certain temps, jusqu'à ce que je lise les documents jQuery:" L'événement keypress est envoyé à un élément lorsque le navigateur enregistre la saisie au clavier. Il est similaire à l'événement keydown, sauf que le modificateur et les touches non imprimantes telles que Shift, Esc et suppriment les événements keydown de déclenchement mais pas les événements keypress. " ( https://api.jquery.com/keypress/ )
J'ai dû utiliser l' événement
keyup
oukeydown
pour attraper une pression sur le bouton Entrée.la source