我以为这会在 Stack Overflow 上的某个地方得到解答,但我找不到它。
如果我正在监听按键事件,我应该使用.keyCode还是.which确定是否按下了 Enter 键?
.keyCode
.which
我总是做类似以下的事情:
$("#someid").keypress(function(e) { if (e.keyCode === 13) { e.preventDefault(); // do something } });
但我看到使用.which而不是.keyCode. 有什么区别?一个比另一个更适合跨浏览器吗?
注意: 下面的答案是在 2010 年写的。多年后,这里的keyCode和which都被弃用,赞成key(用于逻辑键)和code(用于键的物理放置)。但请注意,IE 不支持code,并且它的支持key是基于旧版本的规范,因此不太正确。在我写这篇文章时,当前基于 EdgeHTML 和 Chakra 的 Edge 都不支持code,但微软正在推出基于Blink和V8的 Edge 替代品,这可能会/会。
keyCode
which
key
code
一些浏览器使用keyCode,其他浏览器使用which.
如果你使用 jQuery,你可以可靠地使用whichjQuery标准化的东西;更多在这里。
如果你不使用 jQuery,你可以这样做:
var key = 'which' in e ? e.which : e.keyCode;
或者:
var key = e.which || e.keyCode || 0;
…它处理了可能的可能性e.which(0通过0在最后恢复它,使用JavaScript 的奇怪强大的||operator)。
e.which
0
||