我想在按下键盘时禁用输入上的“-”键。
我的第一个想法是使用通常的解决方案:
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的更多信息。声明
keyCode
和which
均已弃用。我添加了一个更详细的代码段,该代码段显示了如何仅在特定元素上阻止键。
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/