好的,我需要我的代码来检查是否按下了减/减/-,如果按下了我想要弹出一个警报框。我尝试了两个109
和189
关键代码,但我仍然没有得到想要的结果。虽然我按"-"
我没有得到那个警报框
7 回答
您在按键事件期间测试的 JavaScript charCodes是ASCII。109 是正确的keyCode,如果在 keydown 或 keyup 事件中使用。
“-”的charCode为 45。
1.event.keyCode = 109 在小键盘上是“-”
2.event.keyCode = 189 is'-' in alphabate keybord key on chrome
3.event.keyCode= 173 是 '-' 在 Firefox 和 chrome 上的 alphabate 键盘键中 173 键是静音开|关
不要在keydown
事件处理程序中这样做——你会让自己受制于不同浏览器关于键码的想法以及不同键盘类型的键码之间的潜在差异。在keypress
事件中执行此操作,然后您可以获得字符代码,这就是您真正想要的。
document.onkeypress = function(evt) {
evt = evt || window.event;
var charCode = evt.which || evt.keyCode;
var charStr = String.fromCharCode(charCode);
if (charStr == "-") {
alert("Minus!");
}
};
您可能需要的关于 JavaScript 关键事件的所有信息:http: //unixpapa.com/js/key.html
您可以通过以下方式发现 keyCodes:
贴一些代码。这对我有用:
document.onkeydown = function (e) {
if (e.keyCode === 109 || e.keyCode === 189) {
alert('minus sign pressed');
}
};
此处关键代码的完整列表:http: //www.cambiaresearch.com/c4/702b8cd1-e5b0-42e6-83ac-25f0306e3e25/Javascript-Char-Codes-Key-Codes.aspx
人们正在远离event.keyCode
并且event.charCode
由于跨浏览器的不一致实现。相反,使用event.code
. 这是一个string
领域。
大多数浏览器都支持Array.includes
,所以我倾向于执行以下操作:
if (['-', 'Minus', 'NumpadSubtract'].includes(e.code)) {
// do something
}
我希望这对您有用,它会检测用户按下的键,如果您正在寻找它会显示警报,您可以将实际键更改为任何其他键。
function detectSubstract(e)
{
var evtobj=window.event? event : e //distinguish between IE's explicit event object (window.event) and Firefox's implicit.
var unicode=evtobj.charCode? evtobj.charCode : evtobj.keyCode
var actualkey=String.fromCharCode(unicode)
if (actualkey=="-")
{
alert('You pressed the minus key')
}
}
document.onkeypress=detectSubstract