Comment soumettre un formulaire lors d'un changement de liste déroulante?

293

Je crée une page dans JSP où j'ai une liste déroulante et une fois que l'utilisateur sélectionne une valeur, il doit cliquer sur le bouton Aller puis la valeur est envoyée au Servlet.

            </select>
            <input type="submit" name="GO" value="Go"/>

Comment puis-je faire en sorte qu'il le fasse en cas de changement? Par exemple, lorsque l'utilisateur sélectionne John, tous ses détails sont récupérés de la base de données et affichés. Je veux que le système le fasse sans avoir à cliquer sur le bouton OK.

John
la source

Réponses:

662

Demandez simplement l'aide de JavaScript.

<select onchange="this.form.submit()">
    ...
</select>

Voir également:

BalusC
la source
6
Beaucoup d'utilisateurs bloquent javascript, existe-t-il un moyen de le faire sans javascript?
deweydb
5
@deweydb: Non. Sinon, j'aurais répondu :) Montrez simplement à une <noscript>bannière que l'expérience du site est meilleure si JS est activé. Une alternative complètement différente consiste à utiliser <ul><li><input type="submit">et à ajouter une charge de CSS pour la faire ressembler à une véritable liste déroulante. Mais alors, il n'y a plus moyen d'en avoir <select>.
BalusC
89
@deweydb "Beaucoup d'utilisateurs bloquent javascript ..." Citation? Honnêtement, je n'ai jamais rencontré un utilisateur qui bloque javascript - j'ai commencé à croire que ces utilisateurs sont un mythe. Cela les empêcherait d'utiliser la moitié d'Internet, d'une part; et toute personne suffisamment avertie pour bloquer le script est probablement consciente de son innocuité et de son omniprésence.
Nathan Hornby
7
@BalusC veuillez ajouter ceci pour les personnes qui s'inquiètent que les utilisateurs <noscript>This form requires that you have javascript enabled to work properly please enable javascript in your browser.</noscript> n'activent pas le javascript également @NathanHornby si vous voulez vraiment une citation, pourquoi ne pas aller dans une bibliothèque publique pour la sécurité de la plupart des bibliothèques publiques? t essayer de le faire passer pour un mythe et cela se fait principalement pour des raisons de sécurité afin de maintenir l'intégrité des ordinateurs car certains javascript sont des codes malveillants ...
Belldandu
10
@deweydb C'est simple. Mettez simplement un submitbouton dans les <noscript>balises. Il ne s'affichera que si les utilisateurs utilisent noscript. Les utilisateurs qui ont activé JS peuvent simplement sélectionner l'élément, et les utilisateurs avec noscript cliqueront simplement sur le bouton soumettre. :)
Aaron Esau
81

JavaScript simple fera l'affaire -

<form action="myservlet.do" method="POST">
    <select name="myselect" id="myselect" onchange="this.form.submit()">
        <option value="1">One</option>
        <option value="2">Two</option>
        <option value="3">Three</option>
        <option value="4">Four</option>
    </select>
</form>

Voici un lien pour un bon tutoriel javascript .

MD Sayem Ahmed
la source
Merci !, Au-dessus, on travaille aussi pour MVC @using (Html.BeginForm ("Actioname", "controllername", FormMethod.Post)) <select name = "myselect" id = "myselect" onchange = "this.form.submit () "> <option value =" 1 "> Un </option> <option value =" 2 "> Deux </option> <option value =" 3 "> Trois </option> <option value =" 4 " > Quatre </option> </select>
charulatha krishnamoorthy
11

autre que de this.form.submit()vous utiliser, vous soumettez également par identifiant ou nom. par exemple j'ai une forme comme celle-ci:<form action="" name="PostName" id="IdName">

  1. De nom : <select onchange="PostName.submit()">

  2. Par Id: <select onchange="IdName.submit()">

sate wedos
la source
Pas besoin de JavaScript!
MikeyE
je pense que «submit ()» est un élément HTML. pas javascript. CMIIW
sate wedos
Je sais, c'est ce que je voulais dire par mon commentaire. J'essayais de vous donner quelques accessoires. :-)
MikeyE
Attendez, n'est-ce pas sérieusement JavaScript?
James Haug
10
Tout ce qui est écrit à l'intérieur des attributs * est interprété comme Javascript. Donc, PostName.submit () est javascript.
Asif Shahzad
9

À ceux de la réponse ci-dessus. C'est définitivement JavaScript. C'est juste en ligne.

BTW l'équivalent jQuery si vous souhaitez appliquer à toutes les sélections:

$('form select').on('change', function(){
    $(this).closest('form').submit();
});
nitsram
la source