Wie sende ich ein Formular bei Änderung der Dropdown-Liste?

293

Ich erstelle eine Seite in JSP, auf der ich eine Dropdown-Liste habe. Sobald der Benutzer einen Wert ausgewählt hat, muss er auf die Schaltfläche "Los" klicken und der Wert wird an das Servlet gesendet.

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

Wie mache ich es so, dass es es bei Änderung tut? Wenn der Benutzer beispielsweise John auswählt, werden alle seine Details aus der Datenbank abgerufen und angezeigt. Ich möchte, dass das System dies tut, ohne auf die Schaltfläche "Los" klicken zu müssen.

John
quelle

Antworten:

662

Fragen Sie einfach JavaScript um Hilfe.

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

Siehe auch:

BalusC
quelle
6
Viele Benutzer blockieren Javascript. Gibt es eine Möglichkeit, dies ohne Javascript zu tun?
Deweydb
5
@deweydb: Nein. Ich hätte es sonst beantwortet :) Zeigen Sie einfach einem <noscript>Banner, dass die Erfahrung der Site besser ist, wenn JS aktiviert ist. Eine völlig andere Alternative besteht <ul><li><input type="submit">darin, eine Menge CSS zu verwenden und einzufügen, damit es wie eine echte Dropdown-Liste aussieht. Aber dann gibt es keine Mittel <select>mehr.
BalusC
89
@deweydb "Viele Benutzer blockieren Javascript ..." Zitat? Ich bin ehrlich gesagt noch nie auf einen Benutzer gestoßen, der Javascript blockiert - ich habe angefangen zu glauben, dass diese Benutzer ein Mythos sind. Dies würde sie zum einen daran hindern, die Hälfte des Internets zu nutzen. und jeder, der klug genug ist, um Skripte zu blockieren, ist sich wahrscheinlich bewusst, wie harmlos und allgegenwärtig es ist.
Nathan Hornby
7
@BalusC Bitte fügen Sie dies für Personen hinzu, die sich Sorgen machen, dass Benutzer kein Javascript aktiviert haben. <noscript>This form requires that you have javascript enabled to work properly please enable javascript in your browser.</noscript> @NathanHornby Wenn Sie wirklich ein Zitat wünschen, warum gehen Sie aus Sicherheitsgründen nicht in eine öffentliche Bibliothek? Versuchen Sie nicht, es als Mythos auszugeben, den es hat und der hauptsächlich aus Sicherheitsgründen getan wird, um die Integrität von Computern zu gewährleisten, da Javascript bösartiger Code ist ...
Belldandu
10
@deweydb Es ist einfach. Fügen Sie einfach eine submitSchaltfläche in <noscript>Tags ein. Es wird nur angezeigt, wenn die Benutzer Noscript verwenden. Benutzer mit aktiviertem JS können das Element einfach auswählen, und Benutzer mit Noscript klicken einfach auf die Schaltfläche "Senden". :)
Aaron Esau
81

Einfaches JavaScript reicht aus -

<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>

Hier ist ein Link für ein gutes Javascript-Tutorial .

MD Sayem Ahmed
quelle
Danke!, Oben funktioniert auch für MVC @using (Html.BeginForm ("Actioname", "Controllername", FormMethod.Post)) <select name = "myselect" id = "myselect" onchange = "this.form.submit () "> <option value =" 1 "> Eins </ option> <option value =" 2 "> Zwei </ option> <option value =" 3 "> Drei </ option> <option value =" 4 " > Vier </ option> </ select>
charulatha krishnamoorthy
11

außer dass this.form.submit()Sie auch nach ID oder Name einreichen. Beispiel Ich habe Form wie folgt:<form action="" name="PostName" id="IdName">

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

  2. Nach ID: <select onchange="IdName.submit()">

Sate Wedos
quelle
Kein JavaScript erforderlich!
MikeyE
Ich denke, 'submit ()' ist HTML-Element. kein Javascript. CMIIW
sate wedos
Ich weiß, das habe ich mit meinem Kommentar gemeint. Ich habe versucht, dir ein paar Requisiten zu geben. :-)
MikeyE
Warten Sie, ist das nicht JavaScript?
James Haug
10
Alles, was in * -Attributen geschrieben ist, wird als Javascript interpretiert. PostName.submit () ist also Javascript.
Asif Shahzad
9

Zu denen in der obigen Antwort. Es ist definitiv JavaScript. Es ist nur inline.

Übrigens das jQuery-Äquivalent, wenn Sie auf alle Auswahlen anwenden möchten:

$('form select').on('change', function(){
    $(this).closest('form').submit();
});
Nitsram
quelle