使用 jquery 检测 Enter 键被按下

Posted

技术标签:

【中文标题】使用 jquery 检测 Enter 键被按下【英文标题】:Detect Enter key is pressed with jquery 【发布时间】:2011-08-03 15:31:52 【问题描述】:

我有一个显示值的文本字段。我想要的是当用户在该文本字段中写入一个新值并按 Enter 键时,会触发一个 ajax 函数来执行分页操作。我有一个这样的文本字段:

<input type="text" id="page" name="page" value="<?php echo($this->pn);?> />

当用户写入任何新值并按 Enter 键时,我希望触发以下 ajax 函数:

update_ajax2(rpp:rpp);?>,pn:document.page.paged.value,filter:'filter);?>',orderby :'orderby);?>');

我尝试使用按键事件来检测if(e.which===13),但这并不能解决问题。谁能指导我?

【问题讨论】:

为什么对keypress 事件采取行动不能解决问题?你有错误吗?你试过keyup吗? @ctcherry 它在 1 次按键上调用 2 种类型的函数。首先它加载我想要的值,然后在同一个按键上加载文本框的value 属性的函数 【参考方案1】:
<input type="text" id="txt"/>

$('#txt').keydown(function (e)
    if(e.keyCode == 13)
        alert('you pressed enter ^_^');
    
)

开启jsfiddle。

【讨论】:

@experimentX 谢谢老兄,但它始终具有文本框的value 属性中的值。它没有检测到新值.... @AwaisQarni 你能发个小提琴吗?? @AwaisQarni 我的意思是jsfiddle.net 或更新我的jsfiddle.net/VCdEn @AwaisQarni ...不..它不是由于价值。这是由于表单元素。即正在提交表单(默认)。防止它。 e.preventDefault() 在这里更新jsfiddle.net/FxU9X/6 标准可用性表示使用按键事件而不是按键事件。它使他们可以选择在按键后取消,方法是在抬起之前按下修饰符(如 esc)。这也是大多数库捕获事件的方式,因此它带来了一致性。 keydown 用于数据输入,key up 用于事件。【参考方案2】:

使用这个,它对我有用:)

$("#search-txt" ).on( "keydown", function(event) 
    if(event.which == 13) 
        return false;//do something
);

【讨论】:

【参考方案3】:

看看这个插件:https://github.com/jeresig/jquery.hotkeys

【讨论】:

【参考方案4】:

按键事件应该可以尝试一下

function keyPressedTest(a)

    a=(a)?a:window.event;
    input=(a.target)?a.target:a.srcElement;
    if(a.keyCode==13)
    
        your_function()
    

【讨论】:

以上是关于使用 jquery 检测 Enter 键被按下的主要内容,如果未能解决你的问题,请参考以下文章

如果只有一个键被按下,如何触发动作?

reactjs-回调函数在输入键被按下时仍然没有更新背景颜色

汇编语言检测鼠标右键是不是被按下了

JavaScript - 事件相关

鼠标右键按下和放开的键代码是多少

如何检测 Ctrl+R 被按下?