HeikoH: Formulareingaben prüfen

Hallo an Alle,

mein Titel läßt sicherlich nichts interessantes vermuten, aber es steckt doch ein Problem dahinter.
Ich möchte die Formularangaben nach Vorgabe durch Radiobutton prüfen lassen, daher habe ich verschiedene Funktionen erstellt (eher von hier reinkopiert).
Warum aber funktioniert das Ganze nicht? Es wird nur die erste Funktion ausgeführt.

<script type="text/javascript">
<!--
function check1()
{
 if(document.Formular.vorname.value == "")  {
   alert("Bitte Ihren Vornamen eingeben!");
   document.Formular.vorname.focus();
   return false;
  }
 if(document.Formular.name.value == "")  {
   alert("Bitte Ihren Namen eingeben!");
   document.Formular.name.focus();
   return false;
  }
 if(document.Formular.email.value.indexOf('@') == -1)  {
   alert("Bitte Ihre eMail eingeben!");
   document.Formular.email.focus();
   return false;
  }
}
function check2()
{
 if(document.Formular.domain.value == "")  {
   alert("Bitte Ihre Domain eingeben!");
   document.Formular.domain.focus();
   return false;
  }
}
function check3()
{
 if(document.Formular.firma.value == "")  {
   alert("Bitte Ihre Firma eingeben!");
   document.Formular.firma.focus();
   return false;
  }
 if(document.Formular.strasse.value == "")  {
   alert("Bitte Ihre Strasse eingeben!");
   document.Formular.strasse.focus();
   return false;
  }
 if(document.Formular.plz.value == "")  {
   alert("Bitte Ihre Postleitzahl eingeben!");
   document.Formular.plz.focus();
   return false;
  }
 var chkZ = 1;
 for(i=0;i<document.Formular.plz.value.length;++i)
   if(document.Formular.plz.value.charAt(i) < "0"
   || document.Formular.plz.value.charAt(i) > "9")
     chkZ = -1;
 if(chkZ == -1) {
   alert("Bitte Ihre Postleitzahl eingeben!");
   document.Formular.plz.focus();
   return false;
  }
 if(document.Formular.stadt.value == "")  {
   alert("Bitte Ihre Stadt eingeben!");
   document.Formular.stadt.focus();
   return false;
  }
}
function chkFormular()
{
 if(document.Formular.button.value == "eins".checked) {
  check1();
   return false;
 }
 if(document.Formular.button.value == "zwei".checked) {
  check1();
   return false;
 check2();
   return false;
 }
 if(document.Formular.button.value == "drei".checked) {
  check1();
 check2();
 check3();
   return false;
 }
}
//-->
</script>

<form name="Formular" method="post" action="" onSubmit="return chkFormular()">
  <table width="60%" border="0">
    <tr>
      <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Vorname</strong></font></td>
      <td><input name="vorname" type="text" id="vorname" size="30"></td>
    </tr>
    <tr>
      <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Name</strong></font></td>
      <td><input name="name" type="text" id="name" size="30"></td>
    </tr>
    <tr>
      <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>eMail</strong></font></td>
      <td><input name="email" type="text" id="email" size="30"></td>
    </tr>
    <tr>
      <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Wo
        möchten Sie das Programm nutzen?</strong></font></td>
      <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
        <input type="radio" name="button" value="eins" checked>
        privat auf meinem PC<br>
        <input type="radio" name="button" value="zwei">
        privat im Web<br>
        <input type="radio" name="button" value="drei">
        gewerblich im Web</font></td>
    </tr>
    <tr>
      <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Domain</strong></font></td>
      <td><input name="domain" type="text" id="domain" size="30"></td>
    </tr>
    <tr>
      <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Firma</strong></font></td>
      <td><input name="firma" type="text" id="firma" size="30"></td>
    </tr>
    <tr>
      <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Strasse,
        Nr.</strong></font></td>
      <td><input name="strasse" type="text" id="strasse" size="30"></td>
    </tr>
    <tr>
      <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Postleitzahl</strong></font></td>
      <td><input name="plz" type="text" id="plz" size="30" maxlength="5"></td>
    </tr>
    <tr>
      <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Stadt</strong></font></td>
      <td><input name="stadt" type="text" id="stadt" size="30"></td>
    </tr>
    <tr>
      <td> </td>
      <td><input name="Submit" type="submit" class="schalter" value="weiter"></td>
    </tr>
  </table>
</form>

Vielen Dank für Eure Hilfe!

HeikoH

  1. Hi Heiko,
    das erste was mir aufgefallen ist befindet Sich hier:

    function chkFormular()
    {
     if(document.Formular.button.value == "eins".checked) {
      check1();
       return false;
     }

    ...

    }

    Du gibst also immer false zurück, egal wie der Check ausfällt.
    Damit es funktioniert mußt Du natürlich das Resultat von  Check1
    zurückgeben. Also eher
    return Check1();

    zusätzlich sollten die Check-Funktionen im Erfolgsfall ein
    return true; zurückgeben, damit der Rest hinhaut.
    Denk mal drüber nach :o)
    CiaoSascha

    1. hi,

      Du gibst also immer false zurück, egal wie der Check ausfällt.
      Damit es funktioniert mußt Du natürlich das Resultat von  Check1
      zurückgeben. Also eher
      return Check1();

      zusätzlich sollten die Check-Funktionen im Erfolgsfall ein
      return true; zurückgeben, damit der Rest hinhaut.

      und das reicht wohl noch nicht aus, um seinen code zum funktionieren zu bringen.

      if(document.Formular.button.value == "zwei".checked) {
        check1();
         return false;
      check2();
         return false;

      hier wird check1() ausgeführt, und durch das anschliessende return wird auch chkformular() beendet - check2() wird hier _nie_ ausgeführt.

      gruss,
      wahsaga

      1. Hallo wahsaga,
        Du hast konkret recht :o)
        Müßte dann in etwa so aussehen:
        return (Check1() && Check2());
        Beliebig erweiterbar
        CiaoSascha

        1. Hallo wahsaga,
          Du hast konkret recht :o)
          Müßte dann in etwa so aussehen:
          return (Check1() && Check2());
          Beliebig erweiterbar
          CiaoSascha

          Hallo Ihr 2,

          und wenn ich einfach das return weglasse?
          Am Ende habe ich ein true jetzt eingefügt, so wie Sascha es meinte.
          Als ich das return check1 eingefügt habe, hat das Script mir den Alert zweimal angezeigt, wenn ein Feld nicht ausgefüllt wurde.
          Die Radiobutton frage behandle ich jetzt als Array, dann funktioniert auch die Prüfung besser.

          Vielen Dank Euch beiden

          HeikoH