Клавиши со стрелками не работают при вводе и текстовой области
У меня есть простая текстовая область и вклад в мое веб-приложение. По какой-то причине я не могу вернуться в набранный текст с помощью клавиш со стрелками. Курсор ввода не перемещается назад.
Однако я могу использовать ctrl + a или щелкнуть мышью в той позиции, которую я хочу редактировать. Это смущает. Я не использую e.preventDefault ни в одном ключевом событии в моем коде - имея около 30 файлов js и несколько огромных файлов css -.
Любые идеи о том, почему стрелки не могут работать?
Спасибо!
4 ответа
Выполните поиск по всем вашим JS-файлам и найдите что-то похожее на:
keyCode == 37
или же
which == 37
так как это левая стрелка. Вероятно, где-то есть что-то похожее на:
if (e.keyCode == 37)
e.preventDefault();
Просто чтобы добавить комментарий, чтобы помочь людям загружать ввод и текстовые сообщения внутри лайтбокса. Большинство лайтбоксов связывают клавиши со стрелками с навигацией по фотографиям (предыдущая, следующая), поэтому клавиши со стрелками не будут работать в полях формы.
Чтобы это исправить, просто найдите в коде JavaScript вашего лайтбокса коды клавиш (как предложил Жюль) и удалите блок кода, который связывает клавиши со стрелками. Или вы можете обусловить это.
Например, в right-lightbox.js код привязки клавиш
var b=p.current,c=({27:"close",33:"prev",37:"prev",38:"prev",39:"next",40:"next",34:"next"})[a.keyCode];
27 является ключом выхода, так что вы можете оставить его там и удалить все остальное.
Как указано в этом комментарии , хорошим способом устранения этой проблемы может быть инструмент разработчика: выберите проблемную текстовую область (например, используя Ctrl + Shift + C) и перейдите кEvent listeners
вкладка.
Я нашел причину поведения подkeydown
категория. Как и ожидалось, это былe.preventDefault();
что я как-то раньше упустил.
Вы также можете искать такие вещи, как:
@HostListener('keydown.arrowup', ['$event']) keyUp(event) {
или же
@HostListener('keydown.arrowdown', ['$event']) keyUp(event) {