OSX上Chrome上的键码消歧歧义

时间:2017-04-11 11:23:54

标签: javascript jquery macos google-chrome

我想在keydown的输入上禁用' - '键。

我的第一个想法是使用通常的解决方案:

if(e.keycode == 189 || e.which == 189 ){
  return false;
}

但事实上,' - '和')'在mac上具有相同的键码(即189) 我也不希望我的右括号键被阻止。

因为它们具有相同的键码,所以fromCharCode方法在这里无关紧要(两者都笨拙地产生'½')

还有其他选择吗?

1 个答案:

答案 0 :(得分:2)

您可以使用event.key而不是event.keyCode。

window.addEventListener("keydown", function (event) {
  if (event.defaultPrevented) {
    return; // Do nothing if the event was already processed
  }

  if (event.key == '-') {
    event.preventDefault();
  }
}, true);

您可以在javascript here on MDN中找到有关KeyboardEvents的更多信息。有人声称keyCodewhich已被弃用。

我添加了一个更详细的代码段,其中显示了如何仅在特定元素上阻止密钥。



document.getElementById("field1").addEventListener("keydown", function (event) {
  if (event.defaultPrevented) {
    return; // Do nothing if the event was already processed
  }

  if (event.key == '-') {
    event.preventDefault();
  }
}, true);

<input id="field1" type="text" />
<input id="field2" type="text" />
&#13;
&#13;
&#13;