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.

Antworten:


662

Fragen Sie einfach JavaScript um Hilfe.

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

Siehe auch:


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 .


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()">


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();
});
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.