2012-05-13 118 views
0

對於某些非常奇怪的原因,當您按順序向前鍵,空格鍵和左鍵時。左側不會觸發並返回空格鍵。三個鍵的任何其他組合都可以很好地工作,但不是那個。任何線索爲什麼?JavaScript鍵盤事件沒有觸發

var Ctrl = { 
    init: function() { 
     window.addEventListener('keydown', this.keyDown, true); 
     window.addEventListener('keyup', this.keyUp, true); 
    }, 

    keyDown: function(event) { 
     console.log(event.keyCode); 

     switch(event.keyCode) { 
      case 37: // Left 
       Ctrl.left = true; 
       break; 
      case 39: // Right 
       Ctrl.right = true; 
       break; 
      case 38: // up 
       Ctrl.up = true; 
       break; 
      case 40: // down 
       Ctrl.down = true; 
       break; 
      case 32: 
       Ctrl.space = true; 
       break; 
      default: 
       break; 
     } 
    }, 

    keyUp: function(event) { 

     switch(event.keyCode) { 
      case 37: // Left 
       Ctrl.left = false; 
       break; 
      case 39: // Right 
       Ctrl.right = false; 
       break; 
      case 38: 
       Ctrl.up = false; 
       break; 
      case 40: 
       Ctrl.down = false; 
       break; 
      case 32: 
       Ctrl.space = false; 
       break; 
      default: 
       break; 
     } 
    } 
}; 
+0

問題可能在別處嗎?例如,在你讀完它之後,你將「Ctrl.space」設置爲「false」? –

+0

檢查了代碼,沒有其他錯誤。事件本身拒絕返回它,所以我很難過。 –

回答

1

這取決於鍵盤的型號。某些鍵盤不適用於某些鍵組合。這是正常的。

+0

是的,不是所有的鍵盤都是一樣的,你可以確保你的區域設置和鍵盤佈局設置爲你所在的國家。 – jacqijvv

+0

我猜想有一種防彈的方式來檢測鍵盤輸入嗎?也許不會? –

2

也許您的某個鍵正在激活不需要的默認行爲。您可以嘗試將event.preventDefault();添加到您的事件綁定中。

check the jsFiddle

+0

給了一個嘗試,它似乎沒有做任何事情。好猜測。 –