Bambi: Formular aus Javascript absenden

Beitrag lesen

Hallo zusammen

Ich habe eigentlich eine recht einfache Frage, aber weil ich nicht weiss, ob ich das Ganze nicht eh viel zu kompliziert angehe, schreib ich lieber mal etwas genauer, worum es geht:

Ich habe zwei Formulare:

  1. Formular mit einigen Textfeldern, Checkboxen, etc. Vor dem Abschicken werden die Eingaben mit einer Javascript-Funktion validiert.

Der Form-Tag sieht wie folgt aus:
<form name="formular1" id="formular1" method="post" action="index.php" onsubmit="return formValidate(this,var_1,'formular_submit');">

Wenn die Funktion formValidate nicht true zurückgibt, wird das Formular nicht abgeschickt (und so soll es auch sein).

  1. Formular mit einem Feld vom Typ file, um Dokumente heraufzuladen. Damit der Upload ohne Reload der Seite klappt, mache ich das über einen iframe (wie z.B. unter http://sagmueller.net/fileupload.html).

Hier sieht der Form-Tag so aus:
<form name="formular2" id="formular2" enctype="multipart/form-data" method="post" target="file2_frame" action="check_fileupload.php" onsubmit="uploadStart('file2');">

Das klappt alles.

Nun muss ich aber diese beiden Formulare in einem Formular zusammenbringen (weil man Formulare ja nicht verschachteln kann und das Formular 2 inmitten des Formulars 1 angezeigt werden soll.

Damit das klappt, habe ich eine kleine Funktion geschrieben, welche die Attribute im Form-Tag anpasst:

function setFormAttributes(f,fld,typ)
{
  if (typ == 1) {
    f.action = wp_root + "index.php";
    f.target = "";
    formValidate(f,var_2,fld);
  }
  else if (typ == 2) {
    f.action = "check_fileupload.php";
    f.target = fld + "_frame";
    uploadStart(fld);
  }
}

Diese Funktion rufe ich in den beiden Submit-Buttons auf:

Button für ehemaliges Formular 1:
<input name="formular_submit" type="submit" class="button" value="Absenden" onclick="setFormAttributes(this.form,'formular_submit',1);" />

Button für ehemaliges Formular 2:
<input name="file2_submit" id="file2_submit" type="submit" class="button" value="hochladen" onclick="setFormAttributes(this.form,'file2',2);" />

Das Hochladen (Formular 2) klappt wunderbar. Das ehemalige Formular 1 wird aber immer abgeschickt, auch wenn die Validierung false liefert.

Ich hab auch schon so was ausprobiert:
if (formValidate(f,var_2,fld) == true) { f.submit(); }

aber auch dann wird das Formular nach der Validierung abgeschickt.

Kann mir jemand einen Tipp geben, wie ich verhindern kann, dass das Formular abgeschickt wird, wenn formValidate false liefert?

Und noch eine kleine Zusatzfrage: Wenn ich beim Typ 1 in der Funktion setFormAttributes f.target = ""; angebe, erhalte ich im Firefox Validator eine Warnung (target lacks value). Was könnte ich denn stattdessen für einen Wert angeben, damit diese Warnung nicht kommt?

Ganz lieben Dank für jegliche Hilfe!
Bambi