【问题标题】:Simulate Keypress With jQuery用 jQuery 模拟按键
【发布时间】:2010-11-30 21:39:26
【问题描述】:

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

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

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

我假设是这样的:

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

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

【问题讨论】:

  • This 可能会回答您的问题。
  • 我很好奇 - 在尝试用空格键替换 click 时,您真的希望浏览器在页面上向下滚动吗?在链接上按空格键通常与按向下翻页键的效果相同。

标签: javascript jquery keyboard


【解决方案1】:

我相信这就是您要找的:

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

来自here

【讨论】:

  • 如果与输入控件一起使用,这将不会产生任何实际文本。
  • @AlexBurtsev - 你是对的,那是因为这只会触发事件处理程序,就像按下了指定的键一样,但实际上并没有像按下键盘上的键那样按下该键(可能是出于安全原因)
  • 你有什么理由混用'$'和'jQuery'?
  • 您写的内容在 Chrome 上的 jQuery 2.2.3 中对我不起作用。 :( 但是这样做了:$("whatever").trigger($.Event("keydown", {keyCode: 40}))
  • 基于 Jonathan Benn 的方法,您还可以使用相同的技术来发送密钥而不是发送密钥代码(因为密钥代码被标记为已弃用)。例如: $("whatever").trigger($.Event("keyup", {key: "Enter"})) — 并且可选地,如图所示,使用不同的键盘事件。
【解决方案2】:

另一种选择:

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

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

【讨论】:

  • 我不确定which 的用途。只有 keyCode 在 SAPUI5 中对我有用(Chrome 上的 jQuery 2.2.3)
【解决方案3】:

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

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

阅读以上文档了解更多详情。

【讨论】:

  • 当然,阅读文档,但发布者可能已经知道这一点。 jQuery 事件文档有点不透明。 Andrew Culver 给出了直接的答案,以及更多信息的参考。
【解决方案4】:

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

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

$(element).sendkeys(string) 在插入点插入字符串 contenteditable=true 的输入、文本区域或其他元素。如果 插入点当前不在元素中,它记得在哪里 插入点是最后一次调用 sendkeys 的时间(如果 插入点从未在元素中,它附加到末尾)。

【讨论】:

  • 你不需要 jQuery 来使用它,你可以通过获取 bililiteRange 库来使用相同的功能:github.com/dwachss/bililiteRange(事实上,jQuery 插件只是围绕它的一个薄包装器令人难以置信的独立图书馆)。
【解决方案5】:

这行得通:

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'); event.which = 13;事件.keyCode = 13; jQuery(this).trigger(event);] 试试这个
  • 我需要在对话框中单击 Enter,所以在这里使用 sn-p,我将 this 替换为 #myEl .. 谢谢跨度>
猜你喜欢
  • 2012-03-02
  • 1970-01-01
  • 2011-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-09
  • 1970-01-01
相关资源
最近更新 更多