Javascript / JQuery Как предотвратить повторное выполнение функции при удерживании клавиши? - PullRequest
1 голос
/ 10 марта 2011

Предположим, у нас есть следующий код JQuery:

$(document).bind('keyup', function(e) {

arrows=((e.which)||(e.keyCode));

switch (arrows){

case 37:

executeMyfunction();

break;

}

});

Если пользователь удерживает нажатой левую клавишу со стрелкой (37), executeMyfunction () вызывается повторно.

Как я могучтобы этого не случилось?

Я думал, что keyup сработает, только если ключ отпущен, но он не работает (поэтому я использую keyup, keydown также не работает).

Ответы [ 2 ]

1 голос
/ 10 марта 2011

Полагаю, вам нужно отменить привязку к событию. Я думаю, что это не должно быть keyup, но нажатие клавиши или keydown.

Возможно, что-то вроде этого.

$ (документ) .bind ('keydown', функция (e) {

стрелки = ((e.which) || (e.keyCode));

переключатель (стрелки) {

, дело 37:

executeMyfunction ();

$ (документ) .unbind ( 'KeyDown');

перерыв;

} });

Вам придется повторно связать функцию при включении, если вы хотите использовать событие снова:

$ (document) .bind ('keyup', function (e) {

переключатель (стрелки) {

дело 37: $ (Документ) .bind ( 'KeyDown'); перерыв; }

* * 1 028})

Посмотрите на: http://api.jquery.com/unbind/

0 голосов
/ 10 марта 2011

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

...