web-dev-qa-db-fra.com

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?

77
Dodinas

L'événement de pression de touche de jQuery est destiné à effectuer ce type de travail. Vous pouvez déclencher l'événement en transmettant une chaîne "touche" à .trigger (). Toutefois, pour être plus précis, vous pouvez également transmettre un objet jQuery.Event (spécifiez le type sous la forme "pression au clavier") et indiquez les propriétés de votre choix, telles que le code clé qui constitue la barre d'espacement.

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

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

14
Dmitriy Likhten

Je crois que c'est ce que vous cherchez:

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

De ici .

135
Andrew Culver

Une autre option:

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

http://api.jquery.com/trigger/

35
Denis Ivanov

Vous pouvez essayer ce plugin SendKeys jQuery:

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

$(element).sendkeys(string) insère une chaîne au point d'insertion dans une entrée, une zone de texte ou un autre élément avec contenteditable = true. Si le point d'insertion ne se trouve pas dans l'élément, il se souvient de l'endroit où il se trouvait lors du dernier appel de sendkeys (si le point d'insertion ne figurait jamais dans l'élément, il est ajouté à la fin).

12
Robert Harvey

Cela marche:

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