javascript-détection Ctrl touche pressée ou vers le haut, l'événement de keypress ne déclenche pas

je vois quelques questions similaires ici (comme JavaScript: vérifiez si le bouton CTRL a été appuyé ) mais mon problème est en fait le déclenchement de l'événement. Mon code 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;
        }
    }

l'événement déclenche pour toute autre clé à l'exception de la ctrl .

Je dois aussi le déclencher pour ctrl .

Je ne peux pas utiliser jQuery / prototype / quoi que ce soit donc ces solutions ne sont pas acceptable.

So... Comment puis-je détecter le ctrl ?

34
demandé sur Community 2012-02-21 13:19:43

3 réponses

essayez if (e.ctrlKey) .

MDN: événement.ctrlKey

41
répondu Ash Clarke 2014-03-07 13:18:26

votre événement a une propriété nommée ctrlKey. Vous pouvez vérifier cela pour regarder si la clé a été pressée ou non. Voir l'extrait ci-dessous pour plus de contrôle comme les clés.

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
15
répondu Rick Hoving 2012-02-21 09:28:15

utiliser onkeydown plutôt que onkeypress peut aider.

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

Note: l'événement onkeypress N'est pas activé pour toutes les touches (par exemple ALT, CTRL, SHIFT, ESC) dans tous les navigateurs. Pour détecter uniquement si l'utilisateur a appuyez sur une touche, utilisez l'événement onkeydown à la place, parce qu'il fonctionne pour toutes les clés.

12
répondu Danielle Cerisier 2016-02-25 05:08:25