7

我有一个字段可以在您键入时自行“纠正”。我们编写了一些代码,在按下箭头键时阻止此功能:

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函数。想法?

4

2 回答 2

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 );
于 2013-05-02T22:06:46.203 回答
0

我将允许handleKeyUp接受事件对象或整数。根据. key_ e然后你的单元测试就可以运行了handleKeyUp(40)。当然,这是假设您的单元测试的目的不是测试keyup输入上的处理程序。

于 2013-05-02T22:07:04.733 回答