当按下美元符号键时,如何在keyup或keypress事件中找出按下的键。

3
下面的方法返回 A-Z 和 0-9 中的任何键,当我按下 Shift 键 + 4 时,它返回相同的代码 52。
function keyUpEvent(e)//onkeyup event
{
    var chr = String.fromCharCode(e.keyCode);//converts the keycode into a character
    alert(chr);//alerts the character
}

但是当按下与shift键组合的相应按键时,我需要显示$或%


2
认真的说,你不需要写三次标题。 - JJJ
像这样FIDDLE吗? - adeneo
好的,下次我会改正。但是Stackoverflow不允许提交短问题,所以我把它写得更长了。对此我感到抱歉。 - Anoop
4个回答

6
我建议您使用以下内容:

我会选择类似这样的东西:

$(function () {
    $(document).on('keyup keydown keypress', function (event) {
        if (event.keyCode == 52 && event.shiftKey) {
            alert('foo');
        }
    });
});

jsfiddle


2
键码仅与按键相关。通过按下 Shift 和 4 键,可以得到字符 $。在使用 onkeydown 时,没有专门用于 $ 的键码。编辑:Edward 指出,onkeypress 使用键组合,并且有针对组合的键码。每天都能学到新东西 :) 这里有一些代码,从 MDN 提供的 onkeydown 示例进行了编辑,以检测按键键码。这里是更新后的 fiddle,使用了 这篇 S.O. 帖子 中的帮助,使其兼容 Firefox。如果你喜欢 JQuery,也可以使用该解决方案。$ 等于 36JavaScript 事件键码测试页面
这里有同样的S.O帖子

1
+1 - 回答不错,但是当你从其他用户那里复制答案时,请至少添加一个链接:https://dev59.com/0WfWa4cB1Zd3GeqPdA3f - adeneo
请将您的代码添加到答案中;如果 jsFiddle 挂了,这个答案就无用了。 - Marcel Korpel

2

您不能同时检查两个关键事件。您可以尝试使用e.shiftKey,它会告诉您事件发生时是否按下了Shift键。请尝试检查:

if(e.keyCode === 53 && e.shiftKey){}

如果您有一个文本框,那么您可以在按下回车键时附加事件并检查“%”。

https://developer.mozilla.org/zh-CN/docs/DOM/event.shiftKey

感谢 Marcel Korpel。


有一个 e.shiftKey;请参见 http://unixpapa.com/js/key.html。这个答案假设在按下 5 之前立即按下了 Shift 键,但是可能会有中间键被按下或 Shift 键在按下 5 之前被释放。 - Marcel Korpel
是的。非常正确。在事件被触发时必须按下Shift键。 - nefarianblack
是的,而且你不能确定你的伪代码是否仍然存在问题。请使用 e.shiftKey - Marcel Korpel

1
在文本框的KeyDown事件中,使用以下代码:

TextBox


if (e.Shift && e.KeyCode == Keys.4) {
  //Your code here
}

请确保您在“keydown”事件上执行此代码,因为IE不支持“keypress”事件。 - Kashif Umair Liaqat
1
好的,我正在尝试在onKeyUp事件中使用它,但它没有起作用。 - Anoop
这不是一个答案。就像其他人提到的那样,事件有 shiftKey 属性,但没有 Shift (甚至没有 shift)属性,并且它们有 keyCode 属性,但没有 KeyCode 属性。据我所知,也没有任何浏览器有一个名为 Keys 的全局属性。 - Web_Designer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接