我想在按下键盘时禁用输入上的“-”键。

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

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


但实际上,“-”和“)”在Mac上具有相同的键码(即189)
而且我也不想阻止右括号。

由于它们具有相同的键码,因此fromCharCode方法在这里无关紧要(都笨拙地产生“ 1/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" />

关于javascript - 在OSX上的Chrome上消除键码歧义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43344527/

10-09 20:35