2009-07-20 33 views
7

JavaScript klavye olay işleyicilerini (keypress, keyup, keydown olayları için) test etmenin bir yolu var mı?jQuery klavye olayları nasıl test edilir?

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

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

ve sonra sadece birim testlerinde bu fonksiyonu çalıştırmak ama geçerken gerçek anahtarıdır zaman aynı olması olay argüman nesnesi hazırlamak gerekir:

ben böyle olay işleyicileri ilan edebilir biliyorum preslenmiş:

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

bu olayı tetikleyebilir ve bir tartışma ya da benzeri bir şey olarak anahtar kodunu aktaracak bir yolu var mı? Ne yazık ki jQuery trigger() docs klavye olaylarını kapsamaz.

cevap

15

Rasgele verileri olay nesnesinden geçirebilirsiniz.

docs:

var event = jQuery.Event("logged"); 
event.user = "foo"; 
event.pass = "bar"; 
$("body").trigger(event); 

Ne yapabilirsiniz:

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

Bu şekilde, işleyici (ler) geçirilen olay ne istersen keyCode setine sahip olacak.

+0

Bu harika çalışıyor. Teşekkürler. – RaYell

+1

İyi cevap, ama bu bir işleyici dönüş değeri için test ederken daha yararlıdır triggerEvent(), çalışmak için görünmüyor. –

İlgili konular