2009-07-20 13 views
7

JavaScriptキーボードイベントハンドラ(keypresskeyup、​​イベント)をテストする方法はありますか?jQueryキーボードイベントのテスト方法

私は私はこのようなイベントハンドラを宣言することができます知っている:

function keyUpEvHandler(e) { 
    ... // code here 
} 

$('#myId').keyup(keyUpEvHandler); 

してからちょうどユニットテストでこの機能を実行するが、実際のキーがあるとき、私は渡されたものと同じであることをイベント引数オブジェクトを準備する必要があります押された:

var e = {keyCode: 70, ...}; 

このイベントをトリガして、キーコードを引数または同様のものとして渡す方法はありますか?残念ながらjQuery trigger() docsはキーボードイベントをカバーしていません。

答えて

15

イベントオブジェクトを通じて任意のデータを渡すことができます。

ドキュメント:

あなたが何ができるか
var event = jQuery.Event("logged"); 
event.user = "foo"; 
event.pass = "bar"; 
$("body").trigger(event); 

var event = jQuery.Event("keyup"); 
event.keyCode = 72; 
$(".selector").trigger(event); 

この方法で、ハンドラ(複数可)に渡されたイベントは、あなたが好きにkeyCodeセットを持っています。

+0

それは素晴らしいです。ありがとう。 – RaYell

+1

良い答えですが、これはtriggerEvent()ではうまくいかないようです。これは、ハンドラの戻り値をテストするときに便利です。 –

関連する問題