Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Блокировка keydown во время ввода в текстовом поле (https://javascript.ru/forum/events/43214-blokirovka-keydown-vo-vremya-vvoda-v-tekstovom-pole.html)

byFahrenheit 27.11.2013 00:23

Блокировка 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)?

danik.js 27.11.2013 01:01

Вариант 1:
Проверять event.target на соответствие текстовым полям.
Вариант 2:
Навесить обработчик событий blur/focus, по focus - удалять обработчик keypress, по blur - добавлять обратно. Получится именно такая логика, какую ты хочешь.


Часовой пояс GMT +3, время: 08:13.