小编典典

.keyCode与.which

javascript

我以为可以在Stack Overflow的某处得到答案,但是我找不到它。

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

我一直都做以下事情:

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

但是我看到的示例使用.which而不是.keyCode。有什么不同?一个跨浏览器比另一个更友好吗?


阅读 463

收藏
2020-04-25

共1个答案

小编典典

注:下面的答案写于2010年在这里很多年以后,无论是keyCodewhich赞成不赞成使用key(对于逻辑密钥)和code(对于关键的物理位置)。但是请注意,IE不支持code,并且它对key规范的支持是基于较早版本的规范,因此不太正确。在我撰写本文时,当前基于EdgeHTMLChakraEdge均不支持code,但Microsoft正在为其Edge推出基于Blink和V8的替代产品,据推测可以/将会这样做。

有些浏览器使用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的好奇,强大的||运营商)。

2020-04-25