Я хотел бы поймать событие щелчка с jQuery и смочь сказать, была ли клавиша нажата одновременно, таким образом, я могу разветвиться в функции обратного вызова на основе события нажатия клавиши.
Например:
$("button").click(function() {
if([KEYPRESSED WHILE CLICKED]) {
// Do something...
} else {
// Do something different...
}
});
Действительно ли это возможно вообще или как это может быть сделано, если это возможно?
Вы можете легко определить клавиши shift, alt и control из свойств события;
$("button").click(function(evt) {
if (evt.ctrlKey)
alert('Ctrl down');
if (evt.altKey)
alert('Alt down');
// ...
});
См. quirksmode для получения дополнительных свойств. Если вы хотите обнаружить другие ключи, см. Ответ cletus .
Вам нужно отдельно отслеживать состояние ключа с помощью keydown()
и keyup()
:
var ctrlPressed = false;
$(window).keydown(function(evt) {
if (evt.which == 17) { // ctrl
ctrlPressed = true;
}
}).keyup(function(evt) {
if (evt.which == 17) { // ctrl
ctrlPressed = false;
}
});
Смотрите список кодов ключей. Теперь вы можете проверить это:
$("button").click(function() {
if (ctrlPressed) {
// do something
} else {
// do something else
}
});