Simuler la pression de touche avec jQuery

En utilisant jQuery, comment puis-je simuler (déclencher?) Un KeyPress quand un clic 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 pressaient la "barre d'espace" sur 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 d'y parvenir?

L'événement de pression de touche de jQuery est destiné à faire ce type de travail. Vous pouvez déclencher l'événement en passant une chaîne "keypress" à .trigger (). Cependant, pour être plus précis, vous pouvez réellement passer un objet jQuery.Event (spécifiez le type en tant que "keypress") et fournissez toutes les propriétés que vous voulez, comme le code key étant la barre spatiale.

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

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

Je crois que c'est ce que vous recherchez:

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

De là .

Une autre option:

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

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

Vous pouvez essayer ce plugin jkuery SendKeys:

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 n'est pas actuellement dans l'élément, il se souvient de l'endroit où le point d'insertion était lorsque on a appelé Lastkeys (si le point d'insertion n'était jamais dans l'élément, il s'ajoute à la fin).

Cela marche:

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

Si vous souhaitez simuler les actions du navigateur comme "annuler" ou "refaire", essayez ceci:

 function doUndo(){ document.execCommand('undo', false, null); } function doRedo(){ document.execCommand('redo', false, null); }