После предотвращения поведения по умолчанию клавиша ввода, кажется, обновляет глобальные переменные в сценарии Java

0

Я пишу функцию поиска, подобную функции [cmd + f] в браузере. У меня все работает, но я хочу, чтобы клавиша ввода нажала, чтобы просмотреть результаты через страницу. У меня также есть кнопки со стрелками, которые называют функцию, которую я написал, и они работают. Я запретил поведение ввода по умолчанию, используя:

$('form').keydown(function (event) {
    if (event.keyCode == 13) {
        event.preventDefault();
        return false;
    }
});

Я использую этот код для вызова функции при вводе:

$('form').keyup(function (event) {
    if (event.keyCode == 13) {
        nextSearch();
    }
});

Он работает для первого результата, но я думаю, что он сбрасывает глобальную переменную, которую я использую, чтобы отметить место. Единственный логический ответ, который я могу придумать, - это то, что нажатие enter теперь обновляет JavaScript. Есть ли способ предотвратить это?

Я использую эти глобальные переменные для отслеживания:

window.luCurrentNumber = 0;
window.luLastActive = 0;
  • 0
    Вы не останавливаете событие keyup с помощью привязки события keydown .
Теги:
search
enter

1 ответ

0

Если я понимаю, что вы исправили, вы стрелки и клавиши ввода на вкладку вместо выполнения своих по умолчанию. Вот пример функции, которую я использую для обработки ключа Enter в качестве вкладки, которую я написал, потому что пользователи продолжали нажимать клавишу ввода и случайно отправляли страницу.

    //Make enter key is pressed, tab instead of submitting.
    $('body').on('keydown', 'input, select', function (e) {
        var self = $(this)
              , form = self.parents('form:eq(0)')
              , focusable
              , next
              ;
        if (e.keyCode == 13) {
            focusable = form.find('input,a,select,button').filter(':visible');
            next = focusable.eq(focusable.index(this) + 1);
            if (next.length) {
                next.focus();
            } else {
                form.submit();
            }
            return false;
        }
    });

Хотя это не совсем то, что вы пытаетесь сделать, я думаю, что это должно привести вас к правильному пути.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню