я нашел этот отличный вопрос о привязке клавиш со стрелками с JQuery: Binding arrow keys in JS/jQuery с отличным решением от Sygmoral:переплет клавиши со стрелками в JQuery за исключением ввода и текстовым полем
$(document).keydown(function(e) {
switch(e.which) {
case 37: // left
break;
case 38: // up
break;
case 39: // right
break;
case 40: // down
break;
default: return; // exit this handler for other keys
}
e.preventDefault(); // prevent the default action (scroll/move caret)
});
КРОМЕ: Это предотвращает клавиши со стрелками от работы, как они обычно работают, когда фокус находится в текстовом поле ввода.
Как изменить это решение, чтобы клавиши со стрелками могли нормально функционировать, когда текущий фокус находится во входном, текстовом поле или в другой области редактирования контента?
Просто, чтобы проверить - '.is (': input')' также покрывает текстовые поля? –
Абсолютно! ': input' охватывает все входные элементы, включая textarea, select, button и т. д. – Jai
Я думаю, что тест может быть проще:' if (! $ (e.currentTarget) .is (': input, [contenteditable]')) { 'потому что' .is() 'принимает селектор, который может иметь' ИЛИ' условия, разделенные запятыми. Верный? –