107 votes

Quels événements un <input type="number" /> déclenche-t-il lorsque sa valeur est modifiée ?

Je me demande si quelqu'un sait quels événements un HTML5 <input type="number" /> se déclenche lorsque l'on clique sur ses flèches haut/bas :

example number input

J'utilise déjà un onblur lorsque le curseur quitte le champ de saisie.

0 votes

Cela semble être un bug de chrome stackoverflow.com/questions/44978087/

88voto

Jacob Relkin Points 90729

change serait l'événement qui est déclenché lorsque la valeur du champ change.

Je pense que l'événement HTML5 input ferait également feu.

45 votes

Uniquement oninput est déclenché lorsque les flèches "haut" et "bas" sont cliquées.

3 votes

Mais onchange ne se déclenche que sur le flou, du moins dans firefox. Je suppose qu'il faudra chercher du côté de la pression des touches.

0 votes

Onchange et oninput fonctionnent tous les deux dans Opera, mais seul oninput fonctionne dans Chrome (et seulement lorsque je renvoie false de l'event-handler - sinon Chrome déclenche l'événement oninput de manière répétée).

41voto

Will Moore Points 68

J'ai constaté que pour jQuery, le code suivant couvrait la saisie au clavier, les changements de molette de la souris et les clics de bouton dans Chrome, et traitait également la saisie au clavier dans Firefox.

$("input[type=number]").bind('keyup input', function(){
    // handle event
});

2 votes

Ajoutez-y le mot "changement" et c'est parfait. Vous voudrez toujours écouter les changements externes, et il n'y a aucun mal à l'ajouter de toute façon.

0 votes

Et aussi 'mousewheel' si vous voulez capter les événements de défilement dans le champ de saisie.

5 votes

Notez que .bind() est maintenant déprécié en faveur de .on()

7voto

Niall King Points 21

J'ai trouvé que onkeyup et onchange a tout couvert dans Chrome 19. Il gère la saisie directe de valeurs, l'appui sur la flèche haut-bas, le clic sur les boutons et le défilement de la molette de la souris.

onchange suffirait dans Chrome, mais les autres navigateurs qui ne rendent le champ que sous forme de zone de texte ont besoin de l'attribut onkeyup qui fonctionne parfaitement pour lire la nouvelle valeur.

Lier le mousewheel séparément a eu moins de succès. L'événement se déclenchait trop tôt - avant que la valeur du champ ne soit mise à jour - et donnait donc toujours la valeur précédente du champ.

0 votes

C'est également le cas pour Firefox.

5voto

andho Points 747

Le site onchange se déclenche sur le flou mais le oninput se déclenche lorsque vous tapez. Vous pourriez vouloir mettre une minuterie sur l'événement oninput et lancez votre onchange lorsque l'utilisateur s'est arrêté de taper pendant une seconde ?

3voto

Lucent Points 188

Il existe un bug actuel dans Edge empêche le changement ou l'entrée de se déclencher lors de l'utilisation des touches fléchées dans une entrée numérique.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X