使用jQuery,我如何找到哪个键被按下时,我绑定到按键事件?

$('#searchbox input').bind('keypress', function(e) {});

我想在按下ENTER键时触发提交。

(更新)

尽管我自己找到了(或者更好的:一个)答案,但似乎还有变化的空间;)

keyCode和它之间有区别吗?特别是如果我只找ENTER,它永远不会是unicode键?

是否有些浏览器提供一种属性,而其他浏览器提供另一种?


当前回答

该事件。keyCode和事件。不推荐使用。参见上面的@Gibolt答案或查看文档:https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent

事件。应该使用Key

按键事件也已弃用: https://developer.mozilla.org/en-US/docs/Web/API/Document/keypress_event

其他回答

试试这个

$('#searchbox input').bind('keypress', function(e) {
    if(e.keyCode==13){
        // Enter pressed... do anything here...
    }
});

如果你正在使用jQuery UI,你有翻译的公共键代码。在ui / ui / ui.core.js:

$.ui.keyCode = { 
    ...
    ENTER: 13, 
    ...
};

在tests/simulate/jquery. simulation . JS中也有一些翻译,但我在核心JS库中找不到任何翻译。注意,我只是核对了一下资料。也许有其他方法可以摆脱这些神奇的数字。

你也可以使用String。charCodeAt和。fromcharcode:

>>> String.charCodeAt('\r') == 13
true
>>> String.fromCharCode(13) == '\r'
true
$(document).ready(function(){
    $("#btnSubmit").bind("click",function(){$('#'+'<%=btnUpload.ClientID %>').trigger("click");return false;});
    $("body, input, textarea").keypress(function(e){
        if(e.which==13) $("#btnSubmit").click();
    });
});

希望这对你有所帮助!!

根据Kilian的回答:

如果只输入按键很重要:

<form action="javascript:alert('Enter');">
<input type=text value="press enter">
</form>

这是一个jquery扩展,将处理进入键被按下。

(function ($) {
    $.prototype.enterPressed = function (fn) {
        $(this).keyup(function (e) {
            if ((e.keyCode || e.which) == 13) {
                fn();
            }
        });
    };
}(jQuery || {}));

$("#myInput").enterPressed(function() {
    //do something
});

在这里可以找到一个工作示例 http://jsfiddle.net/EnjB3/8/