使用jQuery触发按键事件的明确方法

mko*_*yak 254 jquery events triggers keypress

我已经阅读了关于这些问题的所有答案,但没有一个解决方案似乎有效.

此外,我正在获得触发按键的特殊字符的氛围根本不起作用.有人可以验证谁做了这个吗?

Nad*_*mli 356

如果你想触发按键或keydown事件,那么你所要做的就是:

var e = jQuery.Event("keydown");
e.which = 50; // # Some key code value
$("input").trigger(e);
Run Code Online (Sandbox Code Playgroud)

  • 问题是如何触发,而不是如何捕获 (40认同)
  • 这对我来说对jQuery UI滑块不起作用.我必须像下面的OreiA答案那样设置e.keyCode. (8认同)
  • 非常好的答案.值得注意的是jQuery.Event可用于jQuery 1.3或更高版本.它在这个问题上变得相关:http://stackoverflow.com/questions/1823617/how-do-i-have-jquerys-autocomplete-plugin-display-its-dropdown-list-upon-page-lo/1823732 (4认同)
  • 我添加了一个触发事件的示例 (2认同)
  • fwiw,我的应用程序使用“keyup”取得了更大的成功 (2认同)

nic*_*ckb 79

使用jQuery 1.6+稍微简洁一点:

var e = jQuery.Event( 'keydown', { which: $.ui.keyCode.ENTER } );

$('input').trigger(e);
Run Code Online (Sandbox Code Playgroud)

(如果您没有使用jQuery UI,请改为使用相应的键代码.)

  • 请记住将'keyCode'替换为'which'. (4认同)
  • @SamuelLindblom我应该写得更清楚:jQuery不规范化通过`.trigger(jQuery.Event('name',props))`传递的事件属性.查看示例http://jsfiddle.net/9ggmrbpd/1/ - 触发事件的属性按原样传递.源代码:https://github.com/jquery/jquery/blob/master/src/event.js#L739 (2认同)

Tom*_*mas 68

真正的答案必须包括keyCode:

var e = jQuery.Event("keydown");
e.which = 50; // # Some key code value
e.keyCode = 50
$("input").trigger(e);
Run Code Online (Sandbox Code Playgroud)

即使jQuery的网站说哪个和keyCode正常化,他们也是非常错误的.对e.which和e.keyCode进行标准的跨浏览器检查总是最安全的,在这种情况下只需定义两者.

  • +1.顺便说一下,`e.keyCode = e.which = 50;`在一行中会更好.:) (33认同)

小智 17

如果你也在使用jQuery UI,你可以这样做:

var e = jQuery.Event("keypress");
e.keyCode = $.ui.keyCode.ENTER;
$("input").trigger(e);
Run Code Online (Sandbox Code Playgroud)


Abb*_*bba 5

我用keyup工作了.

$("#id input").trigger('keyup');
Run Code Online (Sandbox Code Playgroud)

  • 在我6年前的问题中,我也想设置密钥,但不知道如何. (3认同)