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

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

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

(更新)

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

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

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


当前回答

我做的最简单的方法是:

$("#element").keydown(function(event) {
    if (event.keyCode == 13) {
        localiza_cep(this.value);
    }
});

其他回答

 // in jquery source code...
 if (!event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode)) {
     event.which = event.charCode || event.keyCode;
 }

 // So you have just to use
 $('#searchbox input').bind('keypress', function(e) {
     if (e.which === 13) {
         alert('ENTER WAS PRESSED');
     }
 });

好吧,我瞎了:

e.which

将包含键的ASCII码。

参见https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/which

添加隐藏提交,而不是隐藏类型,只是简单的提交style="display:none"。下面是一个示例(从代码中删除不必要的属性)。

<form>
  <input type="text">
  <input type="submit" style="display:none">
</form>

它将接受输入键本机,不需要JavaScript,工作在每个浏览器。

试试这个

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

根据Kilian的回答:

如果只输入按键很重要:

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