2012-02-14 110 views
1

我试图做这样的代码:jQuery的检查一下左Ctrl +左Shift和向左CTRL +右移

$(input).keyup(function (e) 
{ 
    alert(e.shiftKey); 
}); 

但每次我写的节目“假”字,我该怎么办呢?

+0

我不知道什么挺你问,如果你问左右修饰键(Shift,Ctrl,ALT等)之间的区分那么它的通常不可能,见http://stackoverflow.com/a/8562791/96100 – 2012-02-14 12:38:51

+0

我想这样做代码:if(left shift + left alt){...} – user1123379 2012-02-14 12:47:29

+2

在哪个事件中?是否有其他键被按下?正如我刚才提到的,你一般不能区分左右移位或替换 – 2012-02-14 12:53:14

回答

1

你的问题是使用keyup()。到事件发生时,换档键被释放并且不是更加活跃。尝试使用keydown()keypress()

0

尝试

$("input").keydown(function (e) 
{ 
    if(e.shiftKey && e.ctrlKey){ alert("shift + crtl Pressed");} 
}); 

这工作得很好

+0

它可以工作,但我不想要ALT,我想按CTRL。 – user1123379 2012-02-14 14:00:18

+0

我编辑了我的答案 – 2012-02-15 03:32:06

0

,而这两个键是向下后续将被触发。

$(input).keydown(function (e) { 
    if (e.shiftKey && e.ctrlKey) { 
     // This code would run if both the control and shift are down. 
    } 
}); 

但是,它将继续被触发,只要他们通过按住输入框中的两个键,查看jQuery example

我认为jQuery的.keypress()将能够让你知道,当他们被按下,而不是刚刚举行,但现在看来,它只能被调用的字符键a-z, 0-1, ?!>~#

+0

它不起作用:if(e.shiftKey && e.ctrlKey) – user1123379 2012-02-14 13:59:56

+0

@ user1123379:它完美地工作。请参阅:http:// jsfiddl e.net/bRtZH/2/ – KillerX 2012-02-14 14:13:22

+0

@KillerX,你的jsfiddle使用'alt'而不是'shift'和'ctrl'。 – 2012-02-14 14:34:33

3

可悲的是,这是不可能的事件API - 两个Shift键都返回keyCode 16,两个Ctrl键都返回17 - 它们无法区分!

很抱歉的坏消息:(

相关问题