Utilisez les fermetures pour vous rappeler quel était le texte de la case à cocher avant la frappe de la touche et vérifiez s'il a changé.
Ouaip. Vous ne devez pas nécessairement utiliser des fermetures, mais vous devrez vous souvenir de l'ancienne valeur et la comparer à la nouvelle.
Cependant ! Cela ne permet pas de détecter toutes les modifications, car il existe des moyens de modifier le contenu d'une zone de texte sans avoir à appuyer sur une touche. Par exemple, en sélectionnant une plage de texte puis en la coupant par un clic droit. Ou le faire glisser. Ou en déposant du texte d'une autre application dans la zone de texte. Ou modifier un mot via le correcteur orthographique du navigateur. Ou encore...
Donc, si vous devez détecter chaque changement, vous devez le faire par sondage. Vous pourriez window.setInterval
pour vérifier le champ par rapport à sa valeur précédente toutes les secondes (disons). Vous pourriez également câbler onkeyup
à la même fonction afin que les changements que sont causés par les pressions sur les touches sont reflétés plus rapidement.
Encombrant ? Oui. Mais c'est ça ou alors il suffit de le faire à la manière normale du HTML onchange et de ne pas essayer de faire une mise à jour instantanée.
7 votes
Yep, attraper la clé pour ça est mauvais. Vous pouvez coller des trucs sans aucune pression sur les touches.
2 votes
Y a-t-il une chance que vous puissiez poster votre solution finale ? J'ai aussi besoin de résoudre ce problème :)
1 votes
O
.keyup()
événement... plus d'infos ici : stackoverflow.com/questions/3003879/1 votes
Ver $("#some-input").changePolling() ; pour un wrapper qui vérifie la valeur actuelle et déclenche
.change()
si elle a changé.0 votes
Vous devez aussi vérifier ceci stackoverflow.com/a/23266812/3160597
0 votes
Duplicata possible de Détecter la modification d'une zone de saisie de texte