Formular automatisch absenden, wenn radio element ausgewählt wird (ohne button)

  • Hallo,
    ich habe mal wieder ein Problem.
    Und zwar habe ich ein Formular, in welches am ende zwei Radio-Buttons eingebaut sind. Wenn dort eine Auswahl getätigt wird, soll das Formular automatisch abgeschickt werden.
    Dazu habe ich folgenden Ansatz:


    Aber egal welche Option ich auswähle, das Formular wird nicht abgeschickt...


    Woran liegt das? Was mache ich falsch?


    Gruß Torben

  • Danke, so klappt es. Allerdings ist es hinderlich, das eine radio-element checked zu setzten, weil sich deren Status so nicht mehr ändert und der User so nicht mehr das formular absenden kann

  • Gibt wohl doch das checked Attribute: http://www.w3schools.com/jsref/dom_obj_radio.asp
    Dann sollte das hier funktionieren (ungetested)

    HTML
    1. <input type="radio" ... onChecked='this.form.submit();' ...>


    Oder

    HTML
    1. <!-- dein html code -->
    2. <script type="text/javascript">
    3. if(document.getElementById('postpublic').checked) {
    4. // document.getElementById('bildinfo').submit(); das geht so glaub ich net
    5. document.getElementById('postpublic').form.submit() // ungetested
    6. }else if(document.getElementById('notpublic').checked) {
    7. // document.getElementById('bildinfo').submit();
    8. document.getElementById('bildinfo'').form.submit() // ungetested
    9. }
    10. </script>


    Weiß allerdings nicht, was Du mit "dem einen Radio-Element" meinst :x

  • Am Elegantesten wäre es wohl so:




    Durch document.forms wird sichergestellt, dass ein Formular vorhanden ist. Sollten die Elemente wie folgt abgerufen werden, muss nicht zwangsäufig ein form-Element vorhanden sein:


    JavaScript
    1. var radio = document.getElementsByName("gender");


    Sollte tatsächlich keines da sein, kommt es zu einer Endlosschleife und der Browser hängt sich auf oder stürzt ab. Dann würde ich das Ganze wie folgt erweitern:



    Außerdem ist es sinnvoller nicht das "Change"-Event abzufangen, sondern das "Click"-Event. Hintergrund: Wenn das Formular neu geladen wird und der Browser die Auswahl speichert kann das Formular nicht abgesendet werden, wenn man das selbe Radio Element wieder auswählen möchte.


    Man könnte auch einfach beide Events abfangen:


  • Danke für eure Hilfe und Erklärungen.
    EIne letzte Frage dazu habe ich aber noch.
    Welchen Vorteil bietet es mir wenn ich den Submit button so per css ausblende:

    HTML
    1. <input type="submit" value="" style="display: none;">


    im vergleich dazu, wenn ich den Submitbutton komplett weg lasse?

  • Wenn du das Formular sowieso über die radio-Elemente absenden möchtest ist der Button überflüssig. Ein Formular ohne submit-Button ist nicht valide und erzeugt in den meisten Browsern komisches Verhalten. Firefox zum Beispiel erstellt dann gerne selber einen und schreibt da Unfug rein.


    Du kannst das Teil halt auch einfach anzeigen, ist ja Wurst.