2013-07-17 39 views
0

我的功能將鍵盤代碼轉換爲鍵盤按鍵時遇到了一些問題。我原本有一個巨大的開關語句,如果代碼是37,我的程序會輸出「左箭頭鍵」。我的問題是,不同的瀏覽器不會觸發某些按鍵,有時代碼會混淆。例如,運行Chrome的Mac上的shift + 7輸出代碼37,這是一個左箭頭按鍵。火狐在Mac上,如果TAB鍵被按下不告訴我,等從代碼中獲取鍵盤按鍵的jQuery庫

這裏是代碼我正在同:

function getKey(code) { 

    var keyPress; 

    // In case of special keys 

    switch (code) 
    { 
     case 8: 
      keyPress = " backspace "; 
      break; 
     case 9: 
      keyPress = " tab "; 
      break; 
     case 13: 
      keyPress = " enter "; 
      break; 
     case 16: 
      keyPress = " shift "; 
      break; 
     case 17: 
      keyPress = " control "; 
      break; 
     case 18: 
      keyPress = " alt "; 
      break; 
     case 20: 
      keyPress = " caps lock "; 
      break; 
     case 27: 
      keyPress = " escape "; 
      break; 
     case 46: 
      keyPress = " delete "; 
      break; 
     case 37: 
      keyPress = " left arrow key "; 
      break; 
     case 38: 
      keyPress = " up arrow key "; 
      break; 
     case 39: 
      keyPress = " right arrow key "; 
      break; 
     case 40: 
      keyPress = " down arrow key "; 
      break; 
     case 45: 
      keyPress = " insert "; 
      break; 
     case 46: 
      keyPress = " delete "; 
      break; 
     case 91: 
      keyPress = " command "; 
      break; 
     default:   
      keyPress = String.fromCharCode(code);  
    } 

    return keyPress; 

} 

    $(document).keypress(function(e) { 

    var code = e.which; 

    var keyPress = String.fromCharCode(code); 

    $(".keystrokes").append(keyPress); 

}); 

因此,是否有任何的jQuery庫,能夠準確地給我正確按下的鍵?

+0

http://stackoverflow.com/questions/2353417/which-is-the-best-javascript-keyboard-event-library-hotkeys-shortcuts –

+0

號我不想聽每次按下某個按鍵時按下特定的按鍵,以獲得按下哪個按鍵。 –

+0

我一定會錯過一些東西,因爲那些聽起來像是完全一樣的東西。或者至少,你可以使用一些庫來做你喜歡的事情,而不是一堆控制流。 –

回答

0

我不知道一個圖書館可以做你想做的事,但是切換器可以使用正確的數據。

keypress()返回實際的文本條目。 keyup()返回鍵碼。您需要檢查event.where以獲取密鑰event.shiftKey,event.metaKey,event.ctrlKey以獲取修飾符。

http://api.jquery.com/keyup/

要確定哪個鍵被按下,檢查傳遞給處理函數的事件對象。雖然瀏覽器使用不同的屬性來存儲這些信息,但jQuery規範了.which屬性,因此您可以可靠地使用它來檢索關鍵代碼。此代碼對應於鍵盤上的一個鍵,包括特殊鍵(如箭頭)的代碼。爲了捕獲實際的文本輸入,.keypress()可能是更好的選擇。