javascript减法(-)键代码

javascript减法(-)键代码,javascript,keycode,subtraction,Javascript,Keycode,Subtraction,好的,我需要我的代码来检查是否按下了减号/减号/,如果按下了,我希望弹出一个警报框。我尝试了109和189两种关键代码,但仍然没有得到理想的结果。尽管我按下了“-”,但我没有看到警告框,在按键事件中测试的JavaScript字符码是无效的。如果在keydown或keyup事件中使用,则109是正确的键码 “-”的字符编码为45。发布一些代码。这对我很有用: document.onkeydown = function (e) { if (e.keyCode === 109 || e.key

好的,我需要我的代码来检查是否按下了减号/减号/,如果按下了,我希望弹出一个警报框。我尝试了
109
189
两种关键代码,但仍然没有得到理想的结果。尽管我按下了
“-”
,但我没有看到警告框,在按键事件中测试的JavaScript字符码是无效的。如果在keydown或keyup事件中使用,则109是正确的键码


“-”的字符编码为45。

发布一些代码。这对我很有用:

document.onkeydown = function (e) {
    if (e.keyCode === 109 || e.keyCode === 189) {
        alert('minus sign pressed');
    }
};

钥匙代码的完整列表如下:

您可以通过以下方式发现钥匙代码:


我希望这对您有效,它会检测用户按下的键,如果您正在查找它,它会显示警报,您可以将实际键更改为任何其他键

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

不要在
keydown
事件处理程序中执行此操作-您将自己置于不同浏览器关于键代码的想法以及不同键盘类型键代码之间的潜在差异的支配之下。在
按键
事件中执行此操作,然后您可以获得字符代码,而这正是您真正想要的

document.onkeypress = function(evt) {
    evt = evt || window.event;
    var charCode = evt.which || evt.keyCode;
    var charStr = String.fromCharCode(charCode);
    if (charStr == "-") {
        alert("Minus!");
    }
};

所有关于JavaScript键事件的信息:

1.event.keyCode=109在numpad上都是“-”

2.event.keyCode=189在铬合金上的alphabate keybord键中为“-”


3.在firefox和chrome 173上,event.keyCode=173在alphabate keybord中为“-”,keycord键为静音开|关

由于浏览器之间的实现不一致,人们正在远离
event.keyCode
event.charCode
。相反,请使用
event.code
。这是一个
字符串
字段

大多数浏览器支持
数组。包括
,因此我倾向于执行以下操作:

if(['-','减号','NumpadSubtract'])。包括(e.code)){
//做点什么
}

谢谢,我在哪里可以找到javascript键代码的完整列表?我找到了一个或两个,但我找到了“-”作为109和189好的,我找到了一个好的:P为什么要担心字符代码的实际值?为什么不使用
string.fromCharCode
将其转换为字符串呢?因为它的速度要快得多。不要在
keydown
事件中执行此操作。参见我的答案。189不是所有键盘布局的减号。在示例页面中,键盘布局为英语。事实上,
keydown
是比
keypress
更好的答案。如果查看兼容性列表()
keypress
在某些旧版本的中不起作用Firefox@fudgey:我想你误读了那些兼容性表。
charCode
keypress
事件的
属性,自从我第一次尝试它(我认为是1.0之前的版本)以来,它一直很高兴在Firefox中正确地报告字符代码。您可能从这些表中发现,Firefox总是为
keypress
事件的
keyCode
属性报告0,这在这里真的不是问题。@TimDown谢谢。Chrome使用onkeydown和按键代码109和189,但Firefox没有。在切换到onkeypress和您描述的方法后,检测“-”在任何地方都能很好地工作。第一个链接不再有效。我很欣赏您对Firefox如何处理
keycode189
的见解。在我看来,这样的东西没有既定的标准是愚蠢的
keycode189
是我测试的除Firefox之外的所有浏览器上的
-
。这让我想起了IE是多么喜欢成为浏览器的开拓者,不管他们疯狂地挥舞着弯刀所产生的不兼容问题。再次感谢您的帮助。在Firefox和Chrome中,当与
键结合使用时,有必要将
.includes(e.code)
更改为
.includes(e.originalEvent.code)