2013-03-01 148 views
3

以下方法返回AZ和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 
} 

但是我需要显示$或%当按下组合键的各个键时。

+2

严重的是,你不需要写标题的3倍。 – JJJ 2013-03-01 12:45:29

+0

像这样[** FIDDLE **](http://jsfiddle.net/adeneo/bd3PQ/)??? – adeneo 2013-03-01 12:47:58

+0

好的,我会在下次更正它。但Stackoverflow不允许提交简短的问题。这就是为什么我把它做得更长..对不起。 – Anoop 2013-03-01 13:08:58

回答

4

我会像这样的东西去:

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

jsfiddle

+0

其工作就像一个魅力。谢谢 – Anoop 2013-03-01 13:12:00

2

键码仅与键相关。 $是一个字符,通过两个键,Shift键和4取得使用onkeydown

编辑时没有键码明确了$:有人指出,爱德华是onkeypress使用组合键,确实有键码对组合。每天学习新东西:)

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

Here's the fiddle已更新为Firefox-friendly,使用this S.O. post的帮助。如果你这样做,JQuery解决方案也可以工作。

$等于36

JavaScript Event KeyCode Test Page

这里是相同S.O thread

+1

+1 - 很好的答案,但是当你复制其他用户的答案时,至少要添加一个链接:http://stackoverflow.com/questions/11868643/what -is-the-keycode-for – adeneo 2013-03-01 12:50:20

+0

请将您的代码添加到您的答案中;如果jsFiddle关闭,这个答案是无用的。 – 2013-03-01 12:50:35

1

KeyDown事件TextBox,使用:

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

它不能在IE 8中工作.. – Anoop 2013-03-01 13:12:33

+0

请确保你在'keydown'事件上做了这段代码,因为IE不支持'keypress'事件。 – KULKING 2013-03-01 14:16:28

+1

好的..我正在尝试onKeyUp事件..它不起作用 – Anoop 2013-03-01 14:22:27

2

您无法一次检查两个关键事件。您可以尝试使用e.shiftKey,它告诉您事件发生时是否按下shift键。尝试检查:

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

此外,如果您有一个文本字段,您可以附加键入事件并检查'%'。

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

感谢马塞尔Korpel

+0

有一个'e.shiftKey';请参阅http://unixpapa.com/js/key.html。这个答案假设Shift键已经在'5'之前被按下了,但是可以按下中间键或者在按下'5'之前释放Shift键。 – 2013-03-01 12:53:15

+0

是的。非常正确。在事件发生时必须按下Shift键。 – nefarianblack 2013-03-01 13:09:17

+0

是的,您无法确定您的伪代码是否仍然存在。改为使用'e.shiftKey'。 – 2013-03-01 13:10:44

相关问题