Клавиши со стрелками не работают на форме
Мы используем формы ниндзя на определенном сайте, и всякий раз, когда мы что-то набираем на нем, клавиши со стрелками просто не работают. Я провел исследование и обнаружил нечто подобное, представленное этому сообществу ( здесь).
Поэтому я проверил JS-файлы сайта и нашел именно то, что было упомянуто. Я заметил этот набор кодов, который, я думаю, отвечает за отключение клавиш со стрелками:
// disable/enable scroll (mousewheel and keys) from https://stackru.com/a/4770179
// left: 37, up: 38, right: 39, down: 40,
// spacebar: 32, pageup: 33, pagedown: 34, end: 35, home: 36
var keys = [37, 38, 39, 40], wheelIter = 0;
function preventDefault(e) {
e = e || window.event;
if (e.preventDefault)
e.preventDefault();
e.returnValue = false;
}
function keydown(e) {
for (var i = keys.length; i--;) {
if (e.keyCode === keys[i]) {
preventDefault(e);
return;
}
}
}
Но я не уверен, что делать дальше, так как этот ресурс, о котором я упоминал, не содержал пошаговую процедуру. Должен ли я удалить весь набор кодов? Я определенно могу сделать тест, но я думаю, что меня могут заставить думать, что он сработал, когда есть некоторые другие изменения, которые я могу не заметить.
Буду признателен за руководство от сообщества. Благодарю.
Я, вероятно, должен предоставить ссылку на актуальную форму. Вот, пожалуйста.
1 ответ
Вы можете проверить, является ли цель элементом формы, используя jQuery (так как вы его используете), и если нет, вызвать вызывающий код, который блокирует поведение по умолчанию.
function keydown(e) {
// Don't block arrow keys on form elements
if( $(e.target).is(':input') ) {
return;
}
for (var i = keys.length; i--;) {
if (e.keyCode === keys[i]) {
preventDefault(e);
return;
}
}
}