【问题标题】:jquery (or pure js) simulate enter key pressed for testingjquery(或纯js)模拟按下回车键进行测试
【发布时间】:2011-03-17 15:34:17
【问题描述】:

模拟用户按下“回车”的最佳方式是什么? $(element).keypress() 似乎不允许我传入实际按下的键。

这是用于单元测试的。

【问题讨论】:

    标签: javascript jquery testing mocking


    【解决方案1】:

    Demo Here

    var e = jQuery.Event("keypress");
    e.which = 13; //choose the one you want
    e.keyCode = 13;
    $("#theInputToTest").trigger(e);
    

    【讨论】:

    • 感谢红方。这个解决方案在文档中对我来说并不明显——api.jquery.com/trigger。它们显示它们的用法为 .trigger( eventType, extraParameters )。我应该能够根据文档弄清楚吗?这是官方支持的功能吗?
    • @morgancodes,我猜不容易不,没有解释,但暗示了下层。
    • 演示脚本很差。检查使用的密钥并验证它是完整的预期密钥。
    • @Luke Stanley,感谢您的挖掘卢克 - “jQuery 规范化 .which 属性,以便您可以可靠地使用它来检索字符代码”。
    • 之前的测试代码不同,test和setup结合在一起。 jsfiddle.net/yB78c 试试这个更好的测试,不管有没有 keyCode - 你会看到这个错误。什么是挖?
    【解决方案2】:

    对于那些想要在纯 javascript 中执行此操作的人,请查看:

    使用标准键盘事件

    正如乔所说,KeyboardEvent 现在是标准。

    触发回车的相同示例(keyCode 13):

    const ke = new KeyboardEvent('keydown', {
        bubbles: true, cancelable: true, keyCode: 13
    });
    document.body.dispatchEvent(ke);
    

    您可以使用this page 帮助您找到正确的键盘事件。


    过时的答案

    你可以做类似的事情(这里是 Firefox)

    var ev = document.createEvent('KeyboardEvent');
    // Send key '13' (= enter)
    ev.initKeyEvent(
        'keydown', true, true, window, false, false, false, false, 13, 0);
    document.body.dispatchEvent(ev);
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-16
    • 1970-01-01
    • 2011-03-23
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多