按下美元键时如何找出在 keyup 或 keypress 事件上按下的键

Posted

技术标签:

【中文标题】按下美元键时如何找出在 keyup 或 keypress 事件上按下的键【英文标题】:How to find out the key pressed on keyup or keypress event when dollar key is pressed 【发布时间】:2013-02-15 23:21:59 【问题描述】:

以下方法返回 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 键组合的相应键时,我需要显示 $ 或 %

【问题讨论】:

说真的,标题不用写3遍。 喜欢这个FIDDLE ??? 好的,下次我会更正它。但是 *** 不允许提交简短的问题。这就是为什么我让它更长..对不起.. 【参考方案1】:

我会选择这样的:

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

jsfiddle

【讨论】:

【参考方案2】:

键码仅与键相关。 $ 是一个字符,通过 Shift 和 4 两个键实现。$ 没有明确的键码使用onkeydown

编辑:爱德华指出onkeypress 使用组合键,并且确实有组合键。每天学习新东西:)

Here's some code,编辑自 MDN 提供的 onkeydown 示例,用于检测按键键码。

Here's the fiddle 更新为对 Firefox 友好,使用来自 this S.O. post 的帮助。 JQuery 解决方案也可以,如果你那样做的话。

$ 等于36

javascript Event KeyCode Test Page

这里也是S.O thread

【讨论】:

+1 - 很好的答案,但是当您复制其他用户的答案时,至少添加一个链接:***.com/questions/11868643/what-is-the-keycode-for 请将您的代码添加到您的答案中;如果 jsFiddle 宕机了,这个答案就没用了。【参考方案3】:

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

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

如果你有一个文本字段,那么你可以在键输入时附加事件并检查“%”。

https://developer.mozilla.org/en-US/docs/DOM/event.shiftKey

感谢马塞尔·科佩尔

【讨论】:

有一个e.shiftKey;见unixpapa.com/js/key.html。此答案假定在 5 之前立即按下了 Shift 键,但可能按下了中间键,或者在按下 5 之前可以释放 Shift 键。 是的。非常正确。触发事件时必须按下 shift 键。 是的,你不能用你的伪代码确定它是否仍然关闭。请改用e.shiftKey【参考方案4】:

TextBoxKeyDown 事件中,使用:

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

【讨论】:

请确保您在keydown 事件上执行此代码,因为IE 不支持keypress 事件。 好的..我正在 onKeyUp 事件中尝试它..它没有工作 这不是答案。正如其他人所提到的,事件具有shiftKey 属性,但没有Shift(甚至也没有shift)属性,并且它们具有keyCode 属性但没有KeyCode 属性。而且,据我所知,也没有浏览器具有 Keys 全局变量。

以上是关于按下美元键时如何找出在 keyup 或 keypress 事件上按下的键的主要内容,如果未能解决你的问题,请参考以下文章

Bash:如何在按下任意键的情况下结束无限循环?

Android - 如何防止按下音量或相机键时手机屏幕打开?

(94)Wangdao.com_第二十七天_键盘事件

JavaScript&jQuery.键盘事件

事件类型--键盘与文本事件

WPF - 按下CTRL + SHIFT时如何捕获?