javascript - обнаруживает нажатие или нажатие клавиши ctrl, событие нажатия клавиши не запускается

Я вижу здесь несколько похожих вопросов (например, 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?


person zozo    schedule 21.02.2012    source источник
comment
разве это: if (e.ctrlKey) {....} работает ..?   -  person Sudhir Bastakoti    schedule 21.02.2012


Ответы (3)


Попробуйте использовать if (e.ctrlKey).

MDN: event.ctrlKey

person Ash Clarke    schedule 21.02.2012

Может помочь использование onkeydown вместо onkeypress.

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

Примечание. Событие onkeypress запускается не для всех клавиш (например, ALT, CTRL, SHIFT, ESC) во всех браузерах. Чтобы определить только то, нажал ли пользователь клавишу, используйте вместо этого событие onkeydown, потому что оно работает для всех клавиш.

person Danielle Cerisier    schedule 25.02.2016

У вашего события есть свойство 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
person Rick Hoving    schedule 21.02.2012