Блокировка keydown во время ввода в текстовом поле
Здравствуйте.
Столкнулся с проблемой следующего характера: На странице сайта задействованы стрелки на клавиатуре. При нажатии на них, выполняются определенные действия.
function checkKey(e) {
switch (e.keyCode) {
case 40:
// Перемещение объекта вверх
break;
case 38:
// Перемещение объекта вниз
break;
case 37:
// Перемещение объекта налево
break;
case 39:
// Перемещение объекта направо
break;
}
}
$(document).keypress(checkKey);
Все отлично работает за исключением одного нюанса: когда пользователь заполняет любое текстовое поле, при нажатии данных кнопок на клавиатуре (например, для перемещения указателя влево или вправо), выполняются функции, привязаны к данным кнопкам, т.е. перемещается объект на экране. Каким образом можно заблокировать событие keypress, до тех пор, пока активно любое текстовое поле на странице (input/textarea)? |
Вариант 1:
Проверять event.target на соответствие текстовым полям. Вариант 2: Навесить обработчик событий blur/focus, по focus - удалять обработчик keypress, по blur - добавлять обратно. Получится именно такая логика, какую ты хочешь. |
| Часовой пояс GMT +3, время: 14:18. |