是否可以使用jQuery自动模拟键盘上的按键,f.ex。在html输入字段中?
作为解释:如果我在输入字段中按 a ,那么会出现“a”。我想这样做不是来自键盘内部,而是通过按下按钮。我知道我可以在输入上使用val("a")
,但这不是我想要达到的目的。
我认为trigger()
没有帮助,因为它只调用了按键事件的事件处理程序。我不想调用处理程序,而是主动按键盘而不进行操作!
答案 0 :(得分:4)
触发器有帮助,因为它触发了一个事件......这是你唯一对浏览器感兴趣的东西......之前的一切都是操作系统的问题(你无法触及,因为你在浏览器中构建...除非你构建一些activeX控件)。所以,这应该有效:
var e = $.Event("keypress");
e.which = <some_key_code>;
$("<your_input_selector>").trigger(e);
正如您所见,当浏览器注册键盘输入时,会发送here按键事件。 keypress和keydown之间的区别是:“如果用户按下并按住某个键,则会触发一次keydown
事件,但会为每个插入的字符触发单独的keypress
事件......”。根据您的使用情况,您可以决定使用哪一个。
答案 1 :(得分:1)
你可以尝试类似的东西。
$("inputSelector").trigger($.Event("keypress", { keyCode: 97 }));
传递你想要的任何键的键码。
答案 2 :(得分:1)
不。在Javascript中无法模拟实际的键盘按键。键盘按键涉及更多的进程,这是在Javascript / Browser之外。
或者你可以模拟按键事件,但我想你不想叫按键。
答案 3 :(得分:1)
在我看来,好像目标不一定是模仿本机浏览器按键事件,而是操纵输入字段内的文本。
如果我是对的,您可以获取.prop('selectionStart')
和.prop('selectionEnd')
值以及覆盖这些索引中的任何字符,以及您要“按下”的字符”。你可以通过触发适当的键盘事件来陪伴它。
我以前从未做过文字选择。我知道IE处理的东西与普通浏览器的处理方式不同,所以如果你选择走这条路,你需要研究这个主题并找到一个跨浏览器的解决方案。为了使事情变得完美,您需要在修改输入值后更改选择属性,就像它是本机粘贴一样。
答案 4 :(得分:0)
我认为没有用于直接与键盘交互的JavaScript API。我建议将字段值的更改与通常对应于键盘按下的事件处理程序组合进行组合,如您所述,以便正常触发该字段上的行为。
答案 5 :(得分:0)
模仿JavaScript中的按键(以及jQuery)可归结为在需要它的地方插入“打字”字符并触发任何相关处理程序(即使用trigger
)。