如何触发keyup事件并传递密钥?

Par*_*ris 7 bdd jquery

我有一个字段,当你输入时"纠正"自己.我们编写了一些代码,当按下箭头键时会阻止此功能:

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();
    }
},
Run Code Online (Sandbox Code Playgroud)

我们想为此写一个单元测试; 但是,我们无法弄清楚如何e.which通过$input.trigger('keyup').我知道触发器的第二个参数允许我们发送"额外选项"; 但是,这只会将更多值传递给handleKeyUp函数.想法?

Moh*_*dil 14

试试这个 -

var e = $.Event("keyup");
e.which = 37; 
$input.trigger(e);
Run Code Online (Sandbox Code Playgroud)

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 );
Run Code Online (Sandbox Code Playgroud)