form.submit is not a funtion (nein, nicht das übliche mit name="submit")

Technoblade

Erfahrenes Mitglied
Hi,

ich hab ein Problem, das viele andere vor mir wohl auch schon hatten wie ich an den google-Ergebnissen merken konnte. Ich habe in einem JavaScript-Quellcode das Problem, dass ich ein formular submitten möchte. Nur immer an der Stelle kommt die Fehlermeldung, dass form.submit keine Funktionn sei. Der übliche Fehler, dass ich im Formular irgendwo submit als name angegeben hätte ist ausgeschlossen, da document.writeln(form.submit) nur undefined ausgibt. Kann mir irgendjemand helfen?
Hier ist mein Quelltext:

Code:
<script type="text/javascript">
var changes = new Array();
var index;

function addChange(index) {
    changes[index] = true;
}

function absenden() {
    var zeilen = document.getElementById("tabelle").rows;
    var form = document.createElement("hiddenForm");
    form.setAttribute("method", "POST");
    form.setAttribute("action", "index.php");

    for(var i = 0; i < changes.length; i++) {
        if(changes[i]) {
            var hiddenField = document.createElement("input");
            hiddenField.setAttribute("type", "hidden");
            hiddenField.setAttribute("name", zeilen[i][6]);
            hiddenField.setAttribute("value", document.getElementsByName("Bearbeiterauswahl" + i)[0].value);
        
            form.appendChild(hiddenField);
        } 
    }
    form.submit();
}
</script>
 
Versuch es mal mit "form" anstatt "hiddenForm", denn der Parameter gibt an, was für ein Element erzeugt werden soll.

Javascript:
var form = document.createElement("form");
 
Jetzt erhalte ich am Ende zwar keinen Fehler mehr, aber es passiert auch nichts. Und der Chrome-Debugger zeigt mir wenn ich an der Stelle nen Breakpoint setze und dann in der Konsole form.submit eingebe auch nur "undefined" an.
 
Das Formular wird über ein include durch php eingebunden und wird über einen simplen klick-Button aufgerufen bei onclick. Das hätte ich evtl. am Anfang schon sagen sollen.
 
Du erzeugst aber doch in der absenden-Funktion erst das Formular.

Sollte Zeile 11 vielleicht so lauten?

Javascript:
var form = document.getElementById("hiddenForm");
 
Nein, Ich erzeuge das gesamte Formular absichtlich nur dort in der Methode. Ich habe eine Tabelle von Tickets bei denen ein Bearbeiter eingetragen werden soll. Wird dort ein Wechsel vorgenommen wird die methode addChange aufgerufen mit dem Index Zeilennummer.
Über das unsichtbare Formular will ich jetzt per POST an den Server die ID's der geänderten zeilen, sowie den dort nun eingetragenen Bearbeiter senden.
Dazu erstelle ich das Formular, trage dort die Daten ein, und will es dann absenden. das einzieg was nicht funktioniert ist eben dieses Absenden mit Submit.
 
Ich wiederhole mich nochmal:

Füg das Formular mal in die Seite ein, anstatt es nur im Speicher zu halten. Funktioniert bei mir ohne Probleme. Zusätzlich war aber auch das createElement falsch (form anstatt hiddenForm).

Javascript:
var form = document.createElement("form");

//...Kram...

document.getElementsByTagName("body")[0].appendChild(form);
form.submit();
 
Zurück