我以为这个问题可以在 Stack Overflow 上找到答案,但我找不到。

如果我正在监听按键事件,我应该使用.keyCode或者.which确定是否按下了 Enter 键?

我总是做类似以下的事情:

$("#someid").keypress(function(e) {
  if (e.keyCode === 13) {
    e.preventDefault();
    // do something
  }
});

但我看到使用的例子.which代替.keyCode

答案

Note: 下面的答案写于2010年。多年后,两者都keyCodewhich已弃用,有利于key(对于逻辑键)和code(用于密钥的物理放置)。code,及其支持key基于旧版本的规范,因此不太正确。code要么,但微软正在推出它的- 和V8- 基于 Edge 的替代,这大概会/将会。


一些浏览器使用keyCode,其他人使用which

如果您使用 jQuery,则可以可靠地使用which作为 jQuery标准化事物;更多这里。

如果你不使用 jQuery,你可以这样做:

var key = 'which' in e ? e.which : e.keyCode;

或者:

var key = e.which || e.keyCode || 0;

…这处理了以下可能性:e.which可能0(通过恢复0最后,使用JavaScript 的功能异常强大||操作员)。

来自: stackoverflow.com