【问题标题】:Trigger keypress(keydown) with jQuery使用 jQuery 触发 keypress(keydown)
【发布时间】:2011-11-17 15:15:39
【问题描述】:

我做了功课并检查了很多问题,但仍然找不到我可以开始工作的东西。

我有一个搜索输入。当用户单击示例时,我希望将“医生”一词逐个字母写在我的搜索输入中。我可以通过很久以前更改 $("#search").val() 来做到这一点,但这就是问题所在。当通常用户输入搜索输入时,自动完成 div 出来了。它由 keydown 事件触发。如果我只是更改输入的 val 属性,则自动完成 div 不会出现,所以我需要以某种方式触发 keydown 事件,以便它会出现。

我找到了这个解决方案:

$("#example").click(function() {    
    $("#search").focus();
    var e = jQuery.Event("keyup");
    e.keyCode = 50;                     
    $("#search").trigger(e);                    
});

但我无法让它工作。请问有什么想法吗?

这是 html 的外观:

<input type="text" id="search" />
Example: <span id="example">doctor</span>

【问题讨论】:

  • 我的标题是keydown事件,但显然这只能通过keyup事件来实现,所以在代码中我使用了keyup。无论如何,没有一个对我有用。
  • 我也尝试在那里使用 e.which 而不是 e.keyCode。仍然没有任何改变。该脚本一直有效,直到 focus() 事件。输入获得焦点,脚本似乎停止执行。

标签: jquery keyboard


【解决方案1】:
$("#example").click(function() {    
    $("#search").focus();
    var e = jQuery.Event("keydown");
    e.keyCode = 50;                     
    $("#search").trigger(e);                    
});

参考:Definitive way to trigger keypress events with jQuery

【讨论】:

  • 我想我从您提供的链接中找到了一个对我有用的答案,尽管我在从未注意到任何评论之前看过它。引用@Nadia Alramli 的评论:> 不,你错过了理解这个概念。这不是它应该 > 工作的方式。 trigger 只会调用事件处理程序。它实际上不会 > 打印密钥。如果要模拟打印key的效果,>那么只需将key添加到输入值中,同时触发事件>。 – Nadia Alramli 2009 年 5 月 7 日 0:21
【解决方案2】:

更好的方法是在textChange event 上触发您的自动完成功能,而不是按键上/下。这样你就可以轻松使用$("#search").val(),自动完成器就会被触发。

额外的好处:如果您使用 textChange,如果用户使用鼠标上下文菜单等复制粘贴文本,它也会触发自动完成(并且不会在制表键或箭头键上触发)

【讨论】:

  • 感谢您的回复!我一定会检查一下。我不知道这样的事件是可能的。但是我过滤了我的 keydown,所以如果按下箭头,它不会触发自动完成。
  • 我刚刚意识到无论如何我都需要触发按键,因为当用户按下示例时,将输入 doctor 单词,并且会出现自动完成 div。然后我需要触发一次向下箭头并输入一次密钥,这样它将转到自动完成 div 中第一个建议的 url。它应该是一个演示。
  • 当然,但如果是我,我会做.textchange(autocomplete_handler) 和一个单独的.keydown(arrows_and_enter_handler)
【解决方案3】:

如果您使用的是 jQuery 自动完成功能,则强制按键不会起到作用。强制自动完成。您可能需要稍微延迟一下:

setTimeout(function()
{
    var CurrentVal = $("#example").val();
    $("#example").autocomplete( "search", CurrentVal )
},500);

【讨论】:

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