Создание комбинаций с клавиатурой и определение наиболее точных - PullRequest
2 голосов
/ 07 сентября 2010

На window я связываю два keydown события. Условием запуска функции обратного вызова является определенная последовательность:

Event #1: ["down", "right", "a"]
Event #2: ["down", "right", "down", "right", "a"]

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

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

Чтобы проверить правильность последовательности, я сравниваю последовательность с окончанием пользовательского ввода.

1 Ответ

1 голос
/ 07 сентября 2010

Более точный - тот, у которого больше ключей. Измените свой код так, чтобы он только $(window).kb один раз, и чтобы зарегистрировать последовательность, вызывается другая функция, которая заполнит структуру массива, подобную этой:

[
 {
    seq:["down", "right", "down", "right", "a"],
    callback: cb1
 },
 {
    seq:["down", "right", "a"],
    callback: cb2
 }
]

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

Теперь ваш единственный $(window).kb будет каждый раз циклически повторять этот массив в поисках совпадения, после обнаружения он вызовет соответствующий callback и прекратит итерацию массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...