J'essaie de soumettre un formulaire lorsqu'un élément est sélectionné dans le menu. Je mets la classe sur le formulaire de recherche et j'utilise la sélection d'événement qui se trouve ici: http://docs.jquery.com/UI/Autocomplete#event-select
Maintenant, lorsque vous sélectionnez un élément à l'aide du clavier (HAUT et BAS), cela fonctionne. Mais si vous sélectionnez un élément à l'aide de la souris, il vous donne la valeur qui a été précédemment saisie.
Vérifiez cet écran: http://www.screenr.com/7T0s
Voici ce que j'utilise pour soumettre:
$("#searchform-input").autocomplete({
select: function (a, b) {
$(".searchform1").submit()
}
});
En effet, le comportement par défaut de l'événement select
est exécuté après votre gestionnaire d'événements a fini de fonctionner (afin que vous puissiez l'annuler si vous le souhaitez) .
Cela signifie que lorsque vous cliquez sur quelque chose, votre formulaire est soumis avant que le widget n'ait la possibilité de remplir correctement le input
.
Vous devriez pouvoir résoudre ce problème en faisant ce que le widget fait normalement pour vous:
$("#searchform-input").autocomplete({
select: function (a, b) {
$(this).val(b.item.value);
$(".searchform1").submit()
}
});
Maintenant, ce que vous vous demandez peut-être, c'est oui, mais pourquoi ça marche quand j'utilise le clavier?
Cela se produit car l'événement focus
remplit réellement l'élément focalisé dans le input
(regardez attentivement; vous verrez le input
rempli lorsque vous montez et descendez dans la liste). Lorsque vous passez la souris sur un élément, l'événement focus
est appelé, remplissant le input
. Lorsque vous sélectionnez quelque chose à l'aide de la touche enter
, la valeur correcte se trouve être dans input
en raison de l'événement focus
.