2016-08-21 16 views
0

これは私のreddit用の追加コードです。私はそれをもっと早く閲覧するのに役立ちます。このアイデアは、4chanのキーボードショートカットに基づいています。次のページの 'N'キー、前のページの 'B'キー。テキストフィールドに入力中にkeydownイベントリスナーがリッスンするのを防ぐにはどうすればよいですか?

window.addEventListener("keydown", checkKeyPressed, false); 
function checkKeyPressed(e){ 
    switch(e.keyCode){ 
     case 66: 
      window.location = document.querySelector('a[rel="nofollow prev"]').href; 
      break; 
     case 78: 
      window.location = document.querySelector('a[rel="nofollow next"]').href; 
      break; 
     default: 
    } 
} 

私の問題は、テキストフィールドに 'n'または 'b'が含まれているテキストフィールドを入力すると発生するということです。テキストフィールドに焦点を当てると、それを防ぐ方法を教えてください。

+4

チェック 'e.target' ? – zerkms

+1

また、* e.target.className *をチェックするために、要素のクラスを無視して置くこともできます。 – RobG

答えて

2

zerkmsでアウトに述べたように:私はあなたがまた、テキスト領域のを検出したい場合は、このような場合のためのサポートが必要な場合は、さらにコードを強化すべきであることを確認していない...

window.addEventListener("keydown", checkKeyPressed, false); 
function checkKeyPressed(e){ 
    var elem = e.target; 
    var type = elem.getAttribute("type"); 
    if(type!='text'){ 
    switch(e.keyCode){ 
     case 66: 
      //window.location = document.querySelector('a[rel="nofollow prev"]').href; 
      alert("case 66"); 
      break; 
     case 78: 
      //window.location = document.querySelector('a[rel="nofollow next"]').href; 
      alert("case 78"); 
      break; 
     default: 
    } 
    } 

} 
+0

魅力的な作品です。ありがとうございました。 varを入れずに 'type = e.target.getAttribute(" type ")'とタイプすることで、さらに短くすることができます。 – kittenparry

関連する問題