Клавиши со стрелками не работают на форме

Мы используем формы ниндзя на определенном сайте, и всякий раз, когда мы что-то набираем на нем, клавиши со стрелками просто не работают. Я провел исследование и обнаружил нечто подобное, представленное этому сообществу ( здесь).

Поэтому я проверил 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;
        }
    }
}
Другие вопросы по тегам