2016-07-05 6 views
0

私はJavaScript(inside PHP)を使用して、keyDownイベント、特に矢印キーを認識しようとしています。私はここにあるさまざまなスレッドを見てきましたが、他のソースもありましたが、解決策を見つけることができませんでした。私のコードは次のようになります:矢印キーでJavaScriptでkeydown()を認識

echo '<script> 
    alert ("Hi"); 
    $(document).keydown = (function(e) { 

    if (e.which == 37 || e.which == 38) { 
    alert("It works!"); 
    } 
    if (e.which == 39 || e.which == 40) { 
    alert("It works, also!"); 
    } 
    }); 
    </script>'; 

最初のアラートがあるので、それはそれがスクリプトでも認識しています。しかし、矢印キーを押すと何も起こりません。

+1

を助けること準備完了](https://api.jquery.com/ready/)になるあなたの 'keydown'ハンドラを作成してください。 – Lix

+3

また、次のステートメント: 'e.which == 37 || 「38」は常に「e.which'_is_'37''''''38'''─真であり、 '38'は非ゼロの数字として_always_ trueです。これには 'switch'文を考慮する必要がありますが、それ以外の場合は' if(e.which == 37 || e.which == 38) ' – somethinghere

+1

' $(document).keydown'がjQueryではありません。 ...それでなぜそれは働いていません。 – epascarello

答えて

0

使用この代わりに:

echo '<script> 
    alert ("Hi"); 
    $(document).on("keydown", function (e) { 

    if (e.which == 37 || e.which == 38) { 
     alert("It works!"); 
    } 
    if (e.which == 39 || e.which == 40) { 
     alert("It works, also!"); 
    } 
}); 
</script>'; 

あなただけjqueryので返され、実際にあなたが追加しないリスナー:)

+1

ああ、ありがとう! – MisterDave

0

を追加されていないオブジェクトのメソッドを追加するためのコード

$(document).keydown = ... 

(jQuery)のイベントハンドラ。

それは私がこの小さなfiddleをしたいずれかの

$(document).keydown(function(){}); 

または

$(document).on("keydown", function(){}); 
+0

または 'document.addEventListener( 'keydown'、function(e){})'と一緒にjqueryを一緒に無視します。 – somethinghere

0

です:あなたは、[jQueryとDOMを確実にしなければならない

$(document).on("keydown", function(e) { 
    switch (e.which) { 
     case 37: 
     case 38: 
      alert("Go left or up!"); 
      break; 
     case 39: 
     case 40: 
      alert("Go right or down!"); 
      break; 
    } 
}); 

希望

+1

ドキュメントにリスナーを追加するときに '$(document).ready'は不要です – Mephiztopheles

+1

答え、入力していただきありがとうございます。 –

+0

これは完全に機能します!私がswitch文を使うことに決めたら、私はこの道を行くでしょう。ありがとうございました。 – MisterDave

関連する問題