53

ここで同様の質問がいくつか見られます ( JavaScript: CTRL ボタンが押されたかどうかを確認するなど) が、私の問題は実際にはイベントのトリガーです。私のjsコード:

    // 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か?

4

3 に答える 3

68

を使ってみてくださいif (e.ctrlKey)

MDN: event.ctrlKey

于 2012-02-21T09:27:26.350 に答える
22

onkeypress ではなく onkeydown を使用すると役立つ場合があります。

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

注: onkeypress イベントは、すべてのブラウザーですべてのキー (ALT、CTRL、SHIFT、ESC など) に対して発生するわけではありません。ユーザーがキーを押したかどうかのみを検出するには、代わりに onkeydown イベントを使用します。これは、すべてのキーに対して機能するためです。

于 2016-02-25T05:08:25.230 に答える
18

イベントには、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
于 2012-02-21T09:28:15.100 に答える