按下美元键时如何找出在 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】:
在TextBox
的KeyDown
事件中,使用:
if (e.Shift && e.KeyCode == Keys.4)
//Your code here
【讨论】:
请确保您在keydown
事件上执行此代码,因为IE 不支持keypress
事件。
好的..我正在 onKeyUp 事件中尝试它..它没有工作
这不是答案。正如其他人所提到的,事件具有shiftKey
属性,但没有Shift
(甚至也没有shift
)属性,并且它们具有keyCode
属性但没有KeyCode
属性。而且,据我所知,也没有浏览器具有 Keys
全局变量。以上是关于按下美元键时如何找出在 keyup 或 keypress 事件上按下的键的主要内容,如果未能解决你的问题,请参考以下文章