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