Quelle est la meilleure façon de simuler la saisie de texte par un utilisateur dans une zone de saisie de texte dans JS et / ou jQuery?
Je ne veux pas réellement mettre du texte dans la zone de saisie, je veux juste déclencher tous les gestionnaires d' événements qui seraient normalement déclenchés par un utilisateur tapant des informations dans une zone de saisie. Cela signifie mise au point, touche enfoncée, pression de touche, touche montée et flou. Je pense.
Alors, comment y parvenir?
$('item').trigger('keypress', {which: 'A'.charCodeAt(0)});
ctrlKey: true
, aussi:shiftKey
,altKey
Vous pouvez envoyer des événements comme
la source
el.dispatchEvent(new Event('keypress', {keyCode: 'a'}))
Ctrl
:el.dispatchEvent(new KeyboardEvent('keydown', { keyCode: 70, ctrlKey: true }));
(Cela entraînera un raccourciCtrl + F
)Pour déclencher une enterpression sur une touche, j'ai dû modifier la réponse @ebynum, en particulier, en utilisant la propriété keyCode.
la source
keydown
l'événement n'est pas capturé ou est-ce que je fais quelque chose de mal ici? fiddle.jshell.net/Palestinian/8d8J9Voici un exemple vanilla js pour déclencher n'importe quel événement:
la source
Vous pouvez y parvenir avec:
EventTarget.dispatchEvent(event)
et en passant un nouveau KeyboardEvent comme événement.Par exemple:
element.dispatchEvent(new KeyboardEvent('keypress', {'key': 'a'}))
Exemple de travail:
Expédition MDN
MDN KeyboardEvent
la source
Vous pouvez désormais faire:
la source
Tout d'abord, je dois dire que l'échantillon de Sionnach733 a parfaitement fonctionné. Certains utilisateurs se plaignent de l'absence d'exemples réels. Voici mes deux cents. J'ai travaillé sur la simulation de clic de souris lors de l'utilisation de ce site: https://www.youtube.com/tv . Vous pouvez ouvrir n'importe quelle vidéo et essayer d'exécuter ce code. Il effectue le passage à la vidéo suivante.
la source
Je pensais attirer votre attention sur le fait que dans le contexte spécifique où un auditeur était défini dans un plugin jQuery, alors la seule chose qui a réussi à simuler l'événement keypress pour moi, finalement capté par cet auditeur, était d'utiliser setTimeout (). par exemple
Toute utilisation de a
$("#txtName").keypress()
été ignorée , bien que placée à la fin du fichier.ready() function
. Aucun supplément DOM particulier n'était de toute façon créé de manière asynchrone.la source
Pour le typage transtypé en KeyboardEventInit et fournissez l'entier keyCode correct
la source