【发布时间】:2010-12-26 06:27:46
【问题描述】:
好的,我需要我的代码来检查是否按下了减/减/-,如果按下了我想要弹出一个警报框。我尝试了109 和189 键码,但我仍然没有得到想要的结果。虽然我按"-" 我没有收到那个警告框
【问题讨论】:
标签: javascript keycode subtraction
好的,我需要我的代码来检查是否按下了减/减/-,如果按下了我想要弹出一个警报框。我尝试了109 和189 键码,但我仍然没有得到想要的结果。虽然我按"-" 我没有收到那个警告框
【问题讨论】:
标签: javascript keycode subtraction
由于跨浏览器的实现不一致,人们正在远离event.keyCode 和event.charCode。相反,请使用event.code。这是一个string 字段。
大部分浏览器都支持Array.includes,所以我倾向于这样做:
if (['-', 'Minus', 'NumpadSubtract'].includes(e.code)) {
// do something
}
【讨论】:
keydown 结合使用时,必须将 .includes(e.code) 更改为 .includes(e.originalEvent.code)。
您可以通过这种方式发现 keyCode:
【讨论】:
1.event.keyCode = 109 在小键盘上是'-'
2.event.keyCode = 189 is'-' in alphabate keybord key in chrome
3.event.keyCode= 173 is '-' in alphabate keybord key on firefox & on chrome 173 keycord is Mute On|Off
【讨论】:
keyCode 189 的见解。对我来说似乎很愚蠢,没有为这样的东西设定标准。 keyCode 189 在我测试的所有浏览器上都是 -,除了 Firefox。让我想起了 IE 喜欢成为浏览器的开拓者,不管他们疯狂地挥舞砍刀会引起不兼容的问题。再次感谢您的帮助。
不要在 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 更好的答案。如果您查看兼容性列表 (quirksmode.org/js/keys.html) keypress 在某些旧版本的 Firefox 中不起作用
keypress 事件的 charCode 和 which 属性自从我第一次尝试 Firefox(我认为它是 1.0 之前的版本)以来一直很高兴地在 Firefox 中正确报告字符代码。您可能从这些表中发现,Firefox 总是为 keypress 事件的 keyCode 属性报告 0,这在这里真的不是问题。
我希望这对您有用,它会检测用户按下的键,如果您正在寻找它会显示警报,您可以将实际键更改为任何其他键。
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
【讨论】:
您在按键事件期间测试的 JavaScript charCodes 是 ASCII。如果在 keydown 或 keyup 事件中使用,109 是正确的 keyCode。
“-”的 charCode 为 45。
【讨论】:
String.fromCharCode 将其转换为字符串?
发布一些代码。这对我有用:
document.onkeydown = function (e) {
if (e.keyCode === 109 || e.keyCode === 189) {
alert('minus sign pressed');
}
};
【讨论】:
keydown 事件中这样做。看我的回答。