使用 jQuery 模拟按键

IT技术 javascript jquery keyboard
2021-02-01 19:38:38

使用 jQuery,如何在单击链接时模拟(触发?)KeyPress?例如,当用户单击以下链接时:

<a id="clickforspace" href="#">Click Here</a>

然后,通过单击链接,就好像他们按下了键盘上的“空格键”。

像这样的事情,我假设:

$("#clickforspace").click(function(e) { 
    e.preventDefault(); 
    //... Some type of code here to initiate "spacebar" //
                                      });

关于如何实现这一目标的任何想法?

5个回答

我相信这就是你要找的:

var press = jQuery.Event("keypress");
press.ctrlKey = false;
press.which = 40;
$("whatever").trigger(press);

这里开始

你有什么理由混合'$'和'jQuery'吗?
2021-03-18 19:38:38
@AlexBurtsev - 你是对的,那是因为这只会触发事件处理程序,就像按下了特定的键一样,但实际上并没有像在键盘上按下某个键时那样按下那个键(可能是由于安全原因)
2021-03-29 19:38:38
你写的东西在 Chrome 上的 jQuery 2.2.3 中对我不起作用。:( 但这确实做到了:$("whatever").trigger($.Event("keydown", {keyCode: 40}))
2021-03-31 19:38:38
例如,如果与输入控件一起使用,这将不会产生任何实际文本。
2021-04-08 19:38:38
基于 Jonathan Benn 的方法,您还可以使用相同的技术来发送密钥而不是发送密钥代码(因为密钥代码被标记为已弃用)。例如: $("whatever").trigger($.Event("keyup", {key: "Enter"})) — 以及可选的,如图所示,使用不同的键盘事件。
2021-04-11 19:38:38

另外一个选择:

$(el).trigger({type: 'keypress', which: 13, keyCode: 13});

http://api.jquery.com/trigger/

我不确定这which是为了什么keyCode适用于 SAPUI5(Chrome 上的 jQuery 2.2.3)
2021-03-30 19:38:38

来自 jQuery 的 keypress 事件旨在完成此类工作。您可以通过将字符串“keypress”传递给 .trigger() 来触发事件。然而,更具体地说,您实际上也可以传递一个 jQuery.Event 对象(将类型指定为“keypress”)并提供您想要的任何属性,例如作为空格键的键码。

http://docs.jquery.com/Events/trigger#eventdata

阅读上述文档以获取更多详细信息。

当然,阅读文档,但海报可能已经知道了。jQuery 事件文档有点不透明。Andrew Culver 给出了直接的回答,并提供了更多信息的参考。
2021-03-20 19:38:38

你可以试试这个 SendKeys jQuery 插件:

http://bililite.com/blog/2011/01/23/improved-sendkeys/

$(element).sendkeys(string)在 input、textarea 或其他具有 contenteditable=true 的元素的插入点插入字符串。如果插入点当前不在元素中,它会记住上次调用 sendkeys 时插入点的位置(如果插入点从未在元素中,它会附加到末尾)。

你不需要 jQuery 来使用它,你可以通过获取bililiteRange来使用相同的功能github.com/dwachss/bililiteRange(事实上​​,jQuery 插件只是这个令人难以置信的库的一个薄包装器,它独立存在)。
2021-03-20 19:38:38

这有效:

var event = jQuery.Event('keypress');
event.which = 13; 
event.keyCode = 13; //keycode to trigger this for simulating enter
jQuery(this).trigger(event); 
[var event = jQuery.Event('keypress'); 事件.which = 13; 事件.keyCode = 13; jQuery(this).trigger(event);] 试试这个
2021-03-15 19:38:38
我需要点击输入对话框,所以与片段在这里,我换成#myEl ..谢谢
2021-03-26 19:38:38