78 votes

Simuler Keypress avec jQuery

Avec jQuery, comment puis-je simuler (déclencher?) Un KeyPress quand un lien est cliqué? Par exemple, lorsqu'un utilisateur clique sur le lien suivant:

 <a id="clickforspace" href="#">Click Here</a>
 

Ensuite, en cliquant sur le lien, ce serait comme s'ils appuyaient sur la "barre d'espace" de leur clavier.

Quelque chose comme ça, je suppose:

 $("#clickforspace").click(function(e) { 
    e.preventDefault(); 
    //... Some type of code here to initiate "spacebar" //
                                      });
 

Des idées sur la façon de réaliser ceci?

Merci!

135voto

Andrew Culver Points 1010

Je crois que c'est ce que vous cherchez:

 var press = jQuery.Event("keypress");
press.ctrlKey = false;
press.which = 40;
$("whatever").trigger(press);
 

À partir d' ici .

37voto

Denis Ivanov Points 97

Une autre option:

 $(el).trigger({type: 'keypress', which: 13, keyCode: 13});
 

15voto

Dmitriy Likhten Points 1685

L'événement keypress de jQuery est censé faire ce genre de travail. Vous pouvez déclencher l'événement, par le passage d'une chaîne "keypress".trigger(). Cependant, pour être plus précis, vous pouvez passer à jQuery.Objet événement (spécifier le type "keypress") et de fournir toutes les propriétés souhaitées telles que le mot de code étant la barre d'espace.

http://docs.jquery.com/Events/trigger#eventdata

Lire la documentation ci-dessus pour plus de détails.

12voto

Robert Harvey Points 103562

Vous pouvez essayer ce SendKeys plugin jQuery:

http://bililite.com/blog/2011/01/23/improved-sendkeys/

$(element).sendkeys(string) insère la chaîne dans le point d'insertion dans un input, textarea ou autre élément avec contenteditable=true. Si l' point d'insertion n'est pas actuellement dans l'élément, il se souvient où le point d'insertion est quand sendkeys a été appelé en dernier (si l' point d'insertion n'a jamais été dans l'élément, il ajoute à la fin).

5voto

anu Points 89

Cela marche:

 var event = jQuery.Event('keypress');
event.which = 13; 
event.keyCode = 13; //keycode to trigger this for simulating enter
jQuery(this).trigger(event); 
 

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