协慌网

登录 贡献 社区

jQuery Event Keypress:按下了哪个键?

使用 jQuery,如何确定绑定到 keypress 事件时按下了哪个键?

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

我想在按ENTER 时触发提交。

[更新]

即使我找到了(或者更好:一个)自己回答,似乎还有一些变化的余地;)

有没有之间的差异keyCodewhich - 尤其是如果我只是在寻找ENTER,这将永远是一个 unicode 关键?

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

答案

实际上,这样更好:

var code = e.keyCode || e.which;
 if(code == 13) { //Enter keycode
   //Do something
 }

试试这个

$('#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.simulate.js 中也有一些翻译,但是我在核心 JS 库中找不到任何翻译。提醒您,我只是参考了来源。也许还有其他方法可以摆脱这些魔术数字。

您还可以使用 String.charCodeAt 和. fromCharCode:

>>> String.charCodeAt('\r') == 13
true
>>> String.fromCharCode(13) == '\r'
true