2012-05-13 6 views
0

前方、スペースバー、および左の順番でキーを押すと非常に奇妙な理由があります。 Leftは起動せず、代わりにスペースバーを返します。 3つのキーの他の組み合わせは完全にうまく動作しますが、それは正しく動作しません。なぜかの手がかりは?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

多分あなたのキーの1つが不必要なデフォルト動作を起動している可能性があります。イベントバインディングにevent.preventDefault();を追加することができます。

check the jsFiddle

+0

それは試してみて、それは何もしていないようだ。しかし、良い推測。 –

関連する問題