JQuery Hotkeys - привязка к нескольким буквенно-цифровым комбинациям символов - PullRequest
0 голосов
/ 18 февраля 2011

Я использую последнюю версию горячих клавиш JQuery .

Плагин фантастический и, в основном, делает именно то, что мне нужно.

Тем не менее, я хотел бы связать с комбинацией клавиш, таких как «A + H», например:

jQuery(document).bind('keydown', 'a+h', function(evt) { alert('hello world!'); }

Это, похоже, не работает - кто-нибудь достиг этого успешно?CTRL + A и т. Д. Работает, но было бы идеально, если бы я мог связывать комбинации буквенно-цифровых символов.

Ответы [ 3 ]

3 голосов
/ 18 февраля 2011

Я посмотрел на базу кода, и похоже, что программирование плагина не поддерживает описанный вами вариант использования. Он объединяет клавиши-модификаторы ( shift , alt и т. Д.) Вместе как особый случай, который позволяет создавать комбинации с ключами мод. Однако он не поддерживает несколько стандартных клавиш.

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

Кстати, код не особо сложен, поэтому вам определенно стоит потрудиться. Может быть, вы увидите то, чего я не вижу.
Файл плагина .

2 голосов
/ 18 февраля 2011

Я не думаю, что было бы возможно обнаружить обе клавиши, так как нажатие любой клавиши вызовет только одно событие. Shift, alt, ctrl и другие мета-ключи являются особым случаем.

Одним из решений будет сохранение последней нажатой клавиши, а затем ожидание следующей. Я сделал демо кода ниже:

var timer, last;
$(document).bind('keydown', function(e) {
    // Typing a then h will call the alert
    if (last == 65 && e.which === 72) {
        alert('Hello World');
    }
    last = e.which;
    // clear last value after 100 ms
    clearTimeout(timer);
    timer = setTimeout(function(){
        last = '';
    }, 100);
}); 

Обратите внимание, что последняя клавиша сбрасывается через 100 миллисекунд, потому что без нее вы можете нажать «а», затем подождать что-то около 10 секунд, а затем «h», чтобы получить предупреждение. Теперь комбинация должна быть нажата почти вместе (но «а» должно быть перед «h») - небольшая модификация также позволит пользователю сначала нажать «h», затем «a».

0 голосов
/ 06 ноября 2014

Это не совсем то, что вы запрашиваете, но это работает для затем h вместо + h (что неудобно делать на клавиатуре)

$(document).bind('keyup', 'a', function(){
    $(document).bind('keyup', 'h', function(){
        // do you shizzle
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...