Получите ключ, который был недоступен, в то время как двойной щелчок был сделан в 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;
});