我以为这个问题可以在 Stack Overflow 上找到答案,但我找不到。
如果我正在监听按键事件,我应该使用.keyCode
或者.which
确定是否按下了 Enter 键?
我总是做类似以下的事情:
$("#someid").keypress(function(e) {
if (e.keyCode === 13) {
e.preventDefault();
// do something
}
});
但我看到使用的例子.which
代替.keyCode
。
答案
Note: 下面的答案写于2010年。多年后,两者都keyCode
和which
已弃用,有利于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 的功能异常强大||
操作员)。