8

有没有办法测试 JavaScript 键盘事件处理程序(for keypress, keyup, keydownevents)?

我知道我可以像这样声明事件处理程序:

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

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

然后在单元测试中运行这个函数,但我必须准备事件参数对象与按下实际键时传递的相同:

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

有没有办法触发这个事件并将关键代码作为参数或类似的东西传递?不幸的是, jQuery trigger() 文档没有涵盖键盘事件。

4

1 回答 1

17

您可以通过事件对象传递任意数据。

文档:

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设置为您想要的任何内容。

于 2009-07-20T15:42:01.373 回答