Я пишу функцию поиска, подобную функции [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;
Если я понимаю, что вы исправили, вы стрелки и клавиши ввода на вкладку вместо выполнения своих по умолчанию. Вот пример функции, которую я использую для обработки ключа 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;
}
});
Хотя это не совсем то, что вы пытаетесь сделать, я думаю, что это должно привести вас к правильному пути.
keyup
с помощью привязки событияkeydown
.