2011-06-10 155 views
14

任何想法爲什麼會發生這種情況?我通常會認爲Chrome會更加寬容代碼?按鍵事件不適用於IE和Chrome,但在FF工作

$(document).keypress(function(e) { 
    if(e.keyCode == 39) rightImage(); 
    if(e.keyCode == 37) leftImage(); 
}); 

這就是我的按鍵的樣子。我錯過了什麼嗎?右圖();和leftImage();是應該工作的功能因爲我在其他地方也使用這些功能

感謝您的幫助!

+0

對我來說,你的鍵碼39是 - >'(引號) – 2011-06-10 19:54:02

+0

選中這個:http://jsfiddle.net/LmXaW/10/ – 2011-06-10 19:57:22

+0

@RicardoArruda它使用keydown事件而不是按鍵。 – Foreever 2014-02-20 10:42:34

回答

30

變化keypress到​​:

$(document).keydown(function(e) { 
    if(e.keyCode == 39) rightImage(); 
    if(e.keyCode == 37) leftImage(); 
}); 

當按鍵被按下時發生keydown事件,由所述按鍵事件緊接着。然後在釋放密鑰時生成密鑰事件。

爲了理解KeyDown和按鍵之間的差,它 有助於瞭解「字符」和 「密鑰」之間的差異。 「鍵」是計算機鍵盤上的物理按鈕,而「字符」是通過按下按鈕鍵入的符號。從理論上講,keyyd事件和keyup事件代表被按下或釋放的鍵,而keypress事件則表示鍵入的字符。理論的實現在所有瀏覽器中都不相同。

+0

謝謝你們!耶keydown工程!也感謝您的解釋! – hellomello 2011-06-10 20:01:50

+0

謝謝...... :) – 2014-02-14 15:21:51

+0

鏈接在某些時候成爲了廣告的重定向。 – Ariane 2018-01-23 16:40:36

2

在這裏找到了答案:http://api.jquery.com/keypress/

「如果你想使用箭頭,刪除,在Chrome退格鍵,你必須使用的keydown在這些鍵按鍵只工作在Firefox和Opera。」

您的代碼在iE8(在FF中工作)中不適用於我,因此我將按鍵切換到了keydown。現在在IE中運行。沒有Chrome在這裏測試。

相關問題