Я изменяю существующее существующее приложение. В этом приложении вверху страницы находится панель поиска. Мне нужно записать, когда пользователь нажимает «Enter» в строке поиска, чтобы я мог запустить некоторую логику.jQuery.on («keydown»), когда ключ «вводится» перехватывается (?) И не работает
Простой, похоже. Я могу просто использовать jQuery keydown
или даже keypress
событие для записи нажатия клавиши, а затем, если значение ключа соответствует для «Enter», я могу продолжить.
<form action="https://www.google.com" method="get" target="_blank">
<input id="search-field"/>
</form>
<script>
$(document).on('keydown', "#search-field", function (e) {
if (e.which == 13)
{
//"some logic"
}
});
</script>
Это захватывает все нажатия клавиши КРОМЕ "введите"! Когда я создаю alert(e.which);
в своем JavaScript, значение каждой клавиши будет всплывать, но когда я попробую «ввести», он просто отправит форму и загрузит новую страницу без запуска предупреждения.
Мой вопрос: Не зная существующего кода относительно поиска коробки (у меня есть очень ограниченный доступ), есть ли способ, что я могу каким-то образом получить это событие keydown
стрелять? Почему это может быть неудачно?
Примечание: я должен использовать jQuery.on() в этом формате для обработки события
e.preventDefault() в этом обработчике событий предотвратил все, кроме «Enter». Может быть, что-то обращается к нему перед моим обработчиком событий? – AlbatrossCafe
Или даже после этого. Если представление формы происходит в другом событии, таком как «submit» или «keyUp», предотвращение «keyDown» не будет делать ничего. Вы можете остановить попытку остановить событие, чтобы пузыриться до элементов родителей, добавив результаты поиска e.stopPropagation(); – ThiagoPXP
Возможно, попробуйте остановить распространение? Я не слишком уверен, но может быть, что keydown распространяется на