我有一个字段可以在您键入时“纠正”自己。我们编写了一些代码,当按下箭头键时会阻止此功能:
handleKeyUp: function(e) {
var arrowKeys = _.range(37, 41),
key = e.which;
// allow user to move cursor by keyboard
if ($.inArray(key, arrowKeys) < 0) {
this.removeInvalidCharacters();
}
},
我们想为此写一个单元测试;但是,我们无法弄清楚如何通过e.which
传递$input.trigger('keyup')
。我知道触发器的第二个参数允许我们发送“额外选项”;但是,这只会将更多值传递给handleKeyUp
函数。想法?
答案 0 :(得分:14)
试试这个 -
var e = $.Event("keyup");
e.which = 37;
$input.trigger(e);
http://api.jquery.com/category/events/event-object/
从jQuery 1.6开始,您还可以将对象传递给jQuery.Event()和 它的属性将在新创建的Event对象上设置。
// Create a new jQuery.Event object with specified event properties.
var e = jQuery.Event("keydown", { keyCode: 64 });
// trigger an artificial keydown event with keyCode 64
jQuery("body").trigger( e );
答案 1 :(得分:0)
我允许handleKeyUp
接受事件对象或整数。只需添加额外的行来定义key
是什么,具体取决于e
的类型。然后您的单元测试可以运行handleKeyUp(40)
。当然,这是假设单元测试的目的不是测试输入上的keyup
处理程序。