2011-06-29 42 views
3

我希望能夠在shift鍵被釋放時運行一個函數。如何檢測換檔是否已經釋放?

我知道變速鍵可與類似地檢測:

$(window).bind("keydown keyup", function(ev) { ... }); 

它工作得很好,用於檢測按鍵的組合(例如shift+a)。問題是,如果你想檢測到shift鍵本身,這觸發​​與ev.shiftKey=false,ev.which=16keyupev.shiftKey=true,ev.which=16。我嘗試在keyup上附加一個事件到這個組合上,但是當這兩個按鍵被按下時,這種方式會以非常微妙的方式失敗:對於第二個shift鍵,您同時獲得keyup/keydowntrue,16,然後當和true,16第一個換檔鍵被釋放。

有沒有乾淨的方法來做到這一點?或者我應該忽略這兩個移位鍵的情況?

+2

是的,處理這個問題的一個顯而易見的方法就是在換檔失敗時遞增一個變量,並在換檔時遞減。除非該變量等於零,否則可以認爲按下了換檔。這就是說,即使這不是一個非常困難的解決方案,我也沒有任何理由爲什麼有人會同時按這兩個。 – brymck

回答

1

有人在同一時間按下兩個SHIFT鍵是不可能的,除非他們故意試圖破壞你的應用程序。你不能設計(閱讀浪費時間)編碼邊緣情況下,當在這種情況下,99%的用戶永遠不會按兩個鍵。

您確定按鍵的邏輯是合理的。設置一個變量並根據按下的增加/減少它,如果它等於0,那麼他們沒有任何按下。 Presto bammo。

編輯:或者只是做布萊恩在他的評論中說! :)

相關問題