автозаполнение jQuery: событие-выбор
Я пытаюсь отправить форму, когда элемент выбирается из меню. Я устанавливаю класс в форме поиска, и я использую событие select для него, которое находится здесь:http://docs.jquery.com/UI/Autocomplete#event-select
теперь, когда вы выбираете элемент с помощью клавиатуры (вверх и вниз), он работает. Но если вы выберете элемент с помощью мыши,он даст вам значение, которое было ранее введено.
проверьте этот screenr: http://www.screenr.com/7T0s
Это то, что я использую для представления:
$("#searchform-input").autocomplete({
select: function (a, b) {
$(".searchform1").submit()
}
});
2 ответов
это так select
поведение события по умолчанию выполняется после обработчик событий завершен (так что вы можете отменить его, если вы того пожелаете).
это означает, что когда вы нажимаете что-то, ваша форма отправляется до того, как виджет имеет возможность заполнить input
правильно.
вы должны быть в состоянии исправить это, делая то, что виджет обычно делает для вас:
$("#searchform-input").autocomplete({
select: function (a, b) {
$(this).val(b.item.value);
$(".searchform1").submit()
}
});
теперь, что вы может быть интересно да, но почему это работает, когда я использую клавиатуру?
это происходит потому, что focus
событие фактически заполняет сфокусированный элемент в input
(внимательно посмотрите, вы увидите input
заполняется при перемещении вверх и вниз по списку). При наведении мыши на элемент focus
вызывается событие, заполняющее input
. Когда вы выбираете что-то, используя enter
ключ, правильное значение находится в input
из-за focus
событие.
хехе. Довольно сложно, но невероятно просто решить. Просто задержите функцию на 500 миллисекунд после события select. Он отлично работает. РАБОТА СДЕЛАНА!! :)
$("#searchform-input").autocomplete({
select: function (a, b) {
setTimeout(submit,500);
}});