用jQuery触发keypress(keydown)

时间:2011-09-15 07:18:16

标签: jquery keyboard

我完成了我的作业并检查了很多问题,但仍然找不到我可以上班的东西。

我有搜索输入。当用户点击示例时,我希望在我的搜索输入中逐字写入“医生”这个词。我可以通过改变$(“#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>

3 个答案:

答案 0 :(得分:8)

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

参考:Definitive way to trigger keypress events with jQuery

答案 1 :(得分:0)

更好的方法是在textChange event上触发自动填充,而不是键入/关闭。这样您就可以轻松使用$("#search").val()并触发自动完成功能。

添加奖励:如果您使用textChange,如果用户使用鼠标上下文菜单等复制粘贴文本,它也会触发自动完成(并且它不会在Tab键或箭头键上触发)

答案 2 :(得分:0)

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

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