Ответ 1
Это связано с тем, что поведение по умолчанию select
выполнено после завершения обработчика событий (чтобы вы могли отменить его, если вы поэтому выберите).
Это означает, что когда вы нажимаете что-то, ваша форма отправляется до того, как виджет имеет возможность правильно заполнить input
.
Вы можете исправить это, выполнив то, что обычно делает для вас виджет:
$("#searchform-input").autocomplete({
select: function (a, b) {
$(this).val(b.item.value);
$(".searchform1").submit()
}
});
Теперь, что вы можете задаться вопросом да, но почему это работает, когда я использую клавиатуру?
Это происходит потому, что событие focus
на самом деле заполняет сфокусированный элемент в input
(смотрите внимательно, вы увидите, что input
заполняется при перемещении вверх и вниз по списку). Когда вы наводите курсор на элемент, вызывается событие focus
, заполняя input
. Когда вы выбираете что-то с помощью клавиши enter
, правильное значение находится в input
из-за события focus
.