Как я могу проверить, нажата ли клавиша во время события щелчка с jQuery?

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

Например:

$("button").click(function() {
    if([KEYPRESSED WHILE CLICKED]) {
        // Do something...
    } else {
        // Do something different...
    }
});

Действительно ли это возможно вообще или как это может быть сделано, если это возможно?

102
задан Peter Mortensen 21 February 2018 в 15:21
поделиться

2 ответа

Вы можете легко определить клавиши shift, alt и control из свойств события;

$("button").click(function(evt) {
  if (evt.ctrlKey)
    alert('Ctrl down');
  if (evt.altKey)
    alert('Alt down');
  // ...
});

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

171
ответ дан 24 November 2019 в 04:29
поделиться

Вам нужно отдельно отслеживать состояние ключа с помощью 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
  }
});
47
ответ дан 24 November 2019 в 04:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: