2012-12-25 77 views
0

某些瀏覽器中存在問題,例如Firefox。keydown識別非拉丁字符

代碼:

$(document).ready(function(){ 
    $(this).keydown(function(e){   // Or keyup or keypress 
      alert(***look at output***); 
    } 
} 

鍵入非拉丁字符爲 「< 」時 - 「 б」 - 「Б」(俄羅斯)表示:

keydown keyCode=0 which=0 charCode=0 
keypress keyCode=0 which=1073 charCode=1073 char=б 
keyup  keyCode=0 which=0 charCode=0 

在Chrome相同的字符顯示:

keydown keyCode=188 which=188 charCode=0 
keypress keyCode=1073 which=1073 charCode=1073 char=б 
keyup  keyCode=188 which=188 charCode=0 

P roblem: 在所有瀏覽器中識別keydown處理程序,而不使用按鍵(由於不同鍵盤佈局上的不同charCode)。

+0

charCode對應於輸入的實際字符。 keyCode對應於哪個鍵被按下,並且對於相同的物理鍵在不同的操作系統上有所不同,以及對於相同字符的鍵盤佈局有所不同。那麼你想要解決什麼問題呢?你真的在尋找一個特定的物理鑰匙,而不是一個特定的人物嗎? –

+0

keyCode與Chrome,IE和Safari中的「<」,「б」,「Б」相同,但charCode不同。無論如何,這個問題是通過爲firefox案例添加異步按鍵監聽器來解決的。 –

回答

0

解決,但與按鍵。通過監聽專門針對Firefox的按鍵手柄,當西里爾語鍵盤佈局不起作用時「<」,「>」。

解決方案:按下鍵盤上的按鈕我們同時收聽keydown和keypress handels。如果西里爾字符按下firefox keyCode輸出爲0,並且keydown忽略它。另一方面,按鍵取keyCode == 0並輸出「<」或「>」。