J'ai une fonction Javascript qui est associée à un événement onChange. Je comprends que certains navigateurs prennent en charge onPaste au niveau du document ou d'un élément. Existe-t-il un moyen de déterminer si l'événement onChange a été causé par un "paste"? J'ai essayé d'ajouter une var globale qui est définie quand onPaste est déclenché, puis de le réinitialiser à la fin de ma routine onChange, mais il n'y a aucune garantie La fonction onPaste est appelée avant onChange.Comment déterminer si un événement onChange a été appelé par un onPaste
Répondre
Je ne pense pas que vous serez en mesure de le faire universellement. Voir le current state de tester cette fonctionnalité. Une façon de détecter une pâte consisterait à compter le temps entre les "appuis" une fois qu'un champ a le focus.
Cela a bien fonctionné pour moi:
<input type="text" onchange="ValueChanged(event, this);" onpaste="this.setAttribute('pasted', '1');"/>
<script type="text/javascript">
function ValueChanged(evt, sender) {
var blnCameFromPaste = ((sender.getAttribute("pasted") || "") == "1");
if (blnCameFromPaste)
alert("changed by paste");
else
alert("changed without paste");
sender.setAttribute("pasted", "0")
}
</script>
Cela a fonctionné pour vous sur quel navigateur/version? –
IE8 et Chrome 7. –
Vous pouvez utiliser onKeyPress/onKeyUp/onKeyDown/onpaste au lieu de onChange.
Et vous pouvez également utiliser l'événement 'input'. Et 'input' est supporté par tous les navigateurs sauf IE, ce qui peut être fait pour le simuler de manière très efficace en utilisant l'évènement' propertychange'. En plus de capturer quelle touche est enfoncée, l'événement 'input' /' propertychange' fait tout ce dont vous avez besoin avec les événements clés. – eyelidlessness
Chaque fois que vous voyez un événement onchange, comparez la longueur actuelle de la valeur du champ à la longueur précédente, et l'heure actuelle à l'heure précédente. Si les caractères ont été saisis plus vite qu'une personne pourrait les taper, ils doivent avoir été collés.
- 1. Comment puis-je déterminer si un événement a été déclenché par une action utilisateur ou par un code?
- 2. JQuery: Comment déterminer si un bouton radio a été sélectionné?
- 3. Comment puis-je déterminer si un UILabel a été touché?
- 4. Comment mon javascript peut-il déterminer s'il a été appelé par WScript ou un navigateur?
- 5. Déterminer si un paramètre nommé a été passé
- 6. tordu: vérifier si un différé a déjà été appelé
- 7. Déterminer si un message sur tcp a été livré
- 8. Déterminez si un événement a déjà été attaché
- 9. Déterminer rapidement si un contenu de dossier a été modifié
- 10. Comment savoir si PHP s'exécute sous un navigateur ou a été appelé comme un script autonome
- 11. Comment détecter si un événement onscroll a été généré par programme?
- 12. Comment déclencher un événement onchange manuellement?
- 13. Comment déterminer si une URL asp.net a été "réécrite"?
- 14. Comment déterminer si une entité a été enregistrée?
- 15. Comment déterminer si une image a été modifiée?
- 16. Comment déterminer quel contrôle a déclenché un événement?
- 17. Est-il possible de déterminer si un attribut ActiveRecord a été défini, autrement que par défaut?
- 18. Comment savoir si un délégué particulier a déjà été affecté à un événement?
- 19. Comment déterminer si itérateur de sortie a été modifié
- 20. Comment déterminer si un événement est déjà abonné
- 21. Comment savoir si un dossier a été définitivement supprimé
- 22. Comment déterminer quelle classe a appelé une fonction
- 23. Comment déterminer par programme si un contrôle ActiveX a été installé et si celui-ci ou ActiveX dans son ensemble a été désactivé?
- 24. Http Module - détecter si Response.End a été appelé
- 25. Comment puis-je savoir si "abort()" a été appelé sur un XMLHTTPRequest
- 26. Recherche d'un événement qui a appelé un script CGI
- 27. Django: Déterminer si un utilisateur a voté
- 28. Test si un objet a été désalloué
- 29. Comment implémenter un système pour déterminer si une étape importante a été atteinte
- 30. Comment déterminer si un paramètre a été "posté" ou "récupéré" à partir de Java?
L'événement 'change' ne se déclenche que lorsqu'un champ de texte est flou. Il est impossible de savoir ce qui l'a déclenché si plusieurs changements sont survenus. – eyelidlessness