2012-02-21 15 views
31

私はいくつかの同様の質問(JavaScript: Check if CTRL button was pressedのような)を見るが、私の問題は実際にはイベントトリガーである。私のJSコード:javascript - ctrlキーが押されたか検出された、keypressイベントがトリガーされない

// Listen to keyboard. 
    window.onkeypress = listenToTheKey; 
    window.onkeyup = listenToKeyUp; 

    /* 
     Gets the key pressed and send a request to the associated function 
     @input key 
    */ 
    function listenToTheKey(e) 
    { 
     if (editFlag == 0) 
     { 
      // If delete key is pressed calls delete 
      if (e.keyCode == 46) 
       deleteNode(); 

      // If insert key is pressed calls add blank 
      if (e.keyCode == 45) 
       createBlank(); 

      if (e.keyCode == 17) 
       ctrlFlag = 1; 
     } 
    } 

イベントがCTRL以外の任意の他のキーのためにトリガされます。
ctrlのトリガーも必要です。
jQuery/prototype /を使用することはできませんので、これらの解決法は受け入れられません。

どうすればのctrlを検出できますか?

+1

これはありません:if(e.ctrlKey){....} work ..? –

答えて

15

あなたのイベントはctrlKeyという名前のプロパティを持っています。これをチェックして、キーが押されたかどうかを調べることができます。キーのような詳細なコントロールについては、以下のスニペットを参照してください。

function detectspecialkeys(e){ 
    var evtobj=window.event? event : e 
    if (evtobj.altKey || evtobj.ctrlKey || evtobj.shiftKey) 
     alert("you pressed one of the 'Alt', 'Ctrl', or 'Shift' keys") 
} 
document.onkeypress=detectspecialkeys 
7

onkeypressではなくonkeydownを使用すると便利です。

http://www.w3schools.com/jsref/event_onkeypress.asp

から:すべてのブラウザでOnKeyPressイベントは、すべてのキーのために解雇されていない(例えばALT、CTRL、SHIFT 、ESC)。ユーザーが キーを押したかどうかだけを検出するには、 すべてのキーで機能するため、代わりにonkeydownイベントを使用します。

関連する問題