Est - il possible d'avoir keyup
, keypress
, blur
et les change
événements appellent la même fonction dans une ligne ou dois - je les faire séparément?
Le problème que j'ai, c'est que je dois valider certaines données avec une recherche db et je voudrais m'assurer que la validation n'est pas manquée dans tous les cas, qu'elle soit tapée ou collée dans la boîte.
jquery
events
jquery-events
shaneburgess
la source
la source
.on('keyup.foo keypress.foo blur.foo change.foo', …)
ou.on('keyup keypress blur change .foo', …)
?on('click tap', e => {...})
. L'auditeur peut être déclenché deux fois, je veux juste déclencher une fois, comment puis-je coder dans la fonction d'écoute?$('#element:not(.busy)').on('keyup keypress blur change', function(e){…});
enfin supprimer le nom de classe «occupé».Depuis jQuery 1.7, la
.on()
méthode est la méthode préférée pour attacher des gestionnaires d'événements à un document. Pour les versions antérieures, la.bind()
méthode est utilisée pour attacher un gestionnaire d'événements directement aux éléments.la source
Je cherchais un moyen d'obtenir le type d'événement lorsque jQuery écoute plusieurs événements à la fois, et Google m'a mis ici.
Donc, pour ceux qui sont intéressés,
event.type
est ma réponse:Plus d'informations dans le doc jQuery .
la source
Vous pouvez utiliser la méthode bind pour attacher une fonction à plusieurs événements. Passez simplement les noms d'événement et la fonction de gestionnaire comme dans ce code:
Une autre option consiste à utiliser le support de chaînage de jquery api.
la source
Si vous associez le même gestionnaire d'événements à plusieurs événements, vous rencontrez souvent le problème de plusieurs d'entre eux qui se déclenchent à la fois (par exemple, l'utilisateur appuie sur l'onglet après la modification; la frappe, la modification et le flou peuvent tous se déclencher).
Cela ressemble à ce que vous voulez réellement, c'est quelque chose comme ceci:
la source
C'est comme ça que je le fais.
la source
Vous pouvez définir la fonction que vous souhaitez réutiliser comme ci-dessous:
Et plus tard, vous pouvez définir autant d'écouteurs d'événements que vous souhaitez sur votre objet pour déclencher cette fonction en utilisant on ('event') en laissant un espace entre les deux comme indiqué ci-dessous:
la source
La réponse de Tatu est de savoir comment je le ferais intuitivement, mais j'ai rencontré des problèmes dans Internet Explorer avec cette façon d'imbriquer / de lier les événements, même si cela se fait par la
.on()
méthode.Je n'ai pas pu identifier exactement avec quelles versions de jQuery c'est le problème. Mais je vois parfois le problème dans les versions suivantes:
Ma solution de contournement a été de définir d'abord la fonction,
puis gérer les événements individuellement
Ce n'est pas la plus jolie solution, mais ça marche pour moi, et j'ai pensé que je la mettrais là pour aider les autres qui pourraient tomber sur ce problème
la source
Ce didacticiel concerne la gestion de plusieurs événements.
la source
Il est possible d'utiliser
.on()
, qui accepte la structure suivante:,.on( events [, selector ] [, data ], handler )
vous pouvez donc transmettre plusieurs événements à cette méthode. Dans votre cas, cela devrait ressembler à ceci:Et voici l'exemple en direct:
la source
Il est simple d'implémenter cela avec les méthodes DOM intégrées sans une grande bibliothèque comme jQuery, si vous voulez, cela prend juste un peu plus de code - itérez sur un tableau de noms d'événements, et ajoutez un écouteur pour chacun:
la source