web-dev-qa-db-ja.com

jQueryでKeypressをシミュレートする

JQueryを使用して、リンクがクリックされたときにKeyPressをシミュレート(トリガー)するにはどうすればよいですか?たとえば、ユーザーが次のリンクをクリックした場合:

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

次に、リンクをクリックすると、キーボードの「スペースバー」を押したかのようになります。

このようなもの、私は仮定しています:

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

これを達成する方法についてのアイデアはありますか?

77
Dodinas

JQueryのkeypressイベントは、この種の作業を行うためのものです。文字列「keypress」を.trigger()に渡すことにより、イベントをトリガーできます。ただし、より具体的には、jQuery.Eventオブジェクトを実際に渡して(タイプを「keypress」として指定)、スペースバーであるキーコードなどの必要なプロパティを提供できます。

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

詳細については、上記のドキュメントを参照してください。

14
Dmitriy Likhten

私はこれがあなたが探しているものだと信じています:

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

here から。

135
Andrew Culver

別のオプション:

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

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

35
Denis Ivanov

このSendKeys jQueryプラグインを試すことができます。

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

$(element).sendkeys(string)は、inputedit、textarea、またはcontenteditable = trueの他の要素の挿入ポイントに文字列を挿入します。挿入ポイントが現在要素内にない場合は、sendkeysが最後に呼び出されたときの挿入ポイントの場所を記憶します(挿入ポイントが要素内になかった場合、末尾に追加します)。

12
Robert Harvey

これは動作します:

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