2009-07-20 5 views
7

Có cách nào để kiểm tra trình xử lý sự kiện bàn phím JavaScript (cho keypress, keyup, keydown sự kiện) không?Làm thế nào để kiểm tra đơn vị sự kiện bàn phím jQuery?

Tôi biết tôi có thể tuyên bố xử lý sự kiện như thế này:

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

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

và sau đó chỉ cần chạy chức năng này trong các bài kiểm tra đơn vị, nhưng tôi sẽ phải chuẩn bị đối tượng tranh luận sự kiện để được giống như thông qua khi chính thực tế là ép:

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

Có cách nào để kích hoạt sự kiện này và chuyển mã khóa làm đối số hay điều gì đó tương tự không? Rất tiếc, jQuery trigger() docs không bao gồm các sự kiện bàn phím.

Trả lời

15

Bạn có thể chuyển dữ liệu tùy ý thông qua đối tượng sự kiện.

Các tài liệu:

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

Những gì bạn có thể làm:

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

Bằng cách này, sự kiện truyền cho handler (s) sẽ có keyCode thiết lập để bất cứ điều gì bạn muốn.

+0

Điều đó thật tuyệt vời. Cảm ơn. – RaYell

+1

Câu trả lời hay, nhưng điều này dường như không hoạt động với triggerEvent(), điều này hữu ích hơn khi kiểm tra giá trị trả về của trình xử lý. –