好的,我需要我的代码检查是否按下减号/减号/-,如果按下了,我希望弹出一个警告框。我尝试使用109
和189
键码,但仍然没有得到预期的结果。虽然我按下了"-"
,但我没有得到警告框。
好的,我需要我的代码检查是否按下减号/减号/-,如果按下了,我希望弹出一个警告框。我尝试使用109
和189
键码,但仍然没有得到预期的结果。虽然我按下了"-"
,但我没有得到警告框。
JavaScript中的charCodes是在按键事件期间进行测试的,它们是ASCII字符。ASCII。如果在键按下或键抬起事件中使用,109是正确的keyCode。
"-"的charCode为45。
1. event.keyCode = 109 是数码键盘上的“-”。
2. event.keyCode = 189 是 Chrome 浏览器字母键盘上的“-”键。
3. event.keyCode= 173 在 Firefox 和 Chrome 浏览器中都是字母键盘上的“-”键,同时在 Chrome 中,按下 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
keydown
比keypress
更好。如果您查看兼容性列表(http://www.quirksmode.org/js/keys.html),您会发现在一些旧版本的Firefox中,`keypress`无法正常工作。 - Mottiekeypress
事件的charCode
和which
属性在Firefox中一直能够正确地报告字符代码,这可能是你从这些表格中挑选出来的内容。你可能会从这些表格中发现,Firefox始终将keypress
事件的keyCode
属性报告为0,但这并不是一个问题。 - Tim Down发布一些代码。这对我有用:
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
keydown
事件中这样做。请查看我的答案。 - Tim Down由于不同浏览器的实现不一致,人们正在逐渐放弃使用 event.keyCode
和 event.charCode
。相反,应该使用 event.code
。这是一个 字符串
字段。
大多数浏览器都支持 Array.includes
,因此我倾向于执行以下操作:
if (['-', 'Minus', 'NumpadSubtract'].includes(e.code)) {
// do something
}
keydown
一起使用时,需要将.includes(e.code)
更改为.includes(e.originalEvent.code)
。 - knot22我希望这对你有用,它可以检测用户按下的键,如果是你要找的那个键,则显示警报。你可以将实际键更改为任何其他键。
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
String.fromCharCode
将其转换为字符串呢? - Tim Down