2012-02-14 157 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 - 它們無法區分!

很抱歉的壞消息:(

相關問題