Получите ключ, который был недоступен, в то время как двойной щелчок был сделан в JavaScript

Я хотел бы знать, какая клавиша была нажата (удержана и нажата) во время события двойного щелчка по элементу.

Обработчик событий позволяет мне получить клавиши alt, shift, meta и ctrl. Что если я захочу определить, был ли сбит "х" при двойном щелчке... Или любую другую букву или цифру в этом отношении.

3 ответа

Решение

Вы должны хранить код ключа до события keyup и ссылаться на текущее значение во время события двойного щелчка.

var heldKey;
$(document).on({ 
    'keydown' : function(e) {        
        heldKey = e.which || e.keyCode;
    },
    'keyup': function(e) { 
        heldKey = undefined;
    },
    'dblclick': function(e){
        console.log(String.fromCharCode(heldKey));
    }
});

Если вы хотите обнаружить клавиши Ctrl, Alt или Shift, они отображаются на объекте события, который передается вам.

$(document).on('dblclick', function(e){
    /*
     * here you could use e.altKey, e.ctrlKey and e.shiftKey - all of them
     * are bools indicating if the key was pressed during the event.
     */
});

Если вы хотите обнаружить другой ключ, то ответ Омара-Али кажется правильным.

Одна из возможностей состоит в том, чтобы сделать это, 88 = буква х.. но.. есть ли лучший способ.

$(document).on('keydown','body',function(e) {
        //console.log(e.keyCode);
        if(e.keyCode==88)
            keyed = true;

    });

    $(document).on('keyup','body',function(e) {
        if(e.keyCode==88)
            keyed = false;
    });

    $(document).on('dblclick','body',function(e) {
        if(keyed==true)
            alert('yes');
        keyed=false;
    });
Другие вопросы по тегам