Hans Meyer: Formular-Checker von SelfHTML will nicht so recht

Ich habe auf einer Seite ein Mail-Formular. Da es immer wieder Leute gibt die nur auf "Senden" klicken ohne ihre E-Mail Adresse usw. anzugeben, habe ich das Javascript von SelfHTML (siehe irgendwo im Javascript-Bereich) eingebaut, welches einen Alert ausgibt wenn etwas fehlt.

Nun habe ich das Problem, dass zwar ein Alert ausgegeben wird, das Formular wird aber trotzdem abgeschickt.

Ich habe im Form-Tag schon onSubmit mit onClick ersetzt, aber der "Bug" ist immer noch da. Den Rest des Scripts habe ich fast nicht geändert, die Namen der Inputboxen habe ich natürlich angepasst, die restlichen Angaben wie "return false" habe ich alle gelassen.

Ich arbeite mit einem Mac + IE5, kann es sein dass es am Browser liegt?

  1. Kann man Dein Werk irgendwo online sehen???

    Gruss
    Uli

  2. Hi

    Habs bei mir so laufen und es geht:

    function chkFormular()
      {
       if(document.Formular.Mail.value == "")
        {
         alert("Bitte eine Mailadresse eingeben!");
         document.Formular.Mail.focus();
         return false;
        }
    }

    und beim onsubmit:

    onsubmit="return chkFormular()"

    MFG
    Markus

    Ich habe auf einer Seite ein Mail-Formular. Da es immer wieder Leute gibt die nur auf "Senden" klicken ohne ihre E-Mail Adresse usw. anzugeben, habe ich das Javascript von SelfHTML (siehe irgendwo im Javascript-Bereich) eingebaut, welches einen Alert ausgibt wenn etwas fehlt.

    Nun habe ich das Problem, dass zwar ein Alert ausgegeben wird, das Formular wird aber trotzdem abgeschickt.

    Ich habe im Form-Tag schon onSubmit mit onClick ersetzt, aber der "Bug" ist immer noch da. Den Rest des Scripts habe ich fast nicht geändert, die Namen der Inputboxen habe ich natürlich angepasst, die restlichen Angaben wie "return false" habe ich alle gelassen.

    Ich arbeite mit einem Mac + IE5, kann es sein dass es am Browser liegt?

  3. Hallo,

    versuchs mal hiermit, ich hab das Script alllerdings nie am Mac gestestet: http://aktuell.de.selfhtml.org/tippstricks/javascript/formkontrolle/index.htm

    Dieter

  4. Ein herzliches Hallo, das erwidert werden will,

    schick doch mal den Quelltext (natürlich so weit gekürzt, dass der Fehler gerade noch auftritt). Sonst müssen wir unsere berühmte Glaskugel befragen ;-)

    Robert

    1. Ein herzliches Hallo, das erwidert werden will,

      ...

      Hallo.

      schick doch mal den Quelltext (natürlich so weit gekürzt, dass der Fehler gerade noch auftritt). Sonst müssen wir unsere berühmte Glaskugel befragen ;-)

      Script:

      <script type="text/javascript">
        <!--
         function checkform() {
          if (document.Newsform.Vorname.value == "Vorname")  {
             alert("Bitte geben Sie Ihren Vornamen ein.");
             document.Formular.Vorname.focus();
            return false;
           }
           if (document.Newsform.Nachname.value == "Nachname") {
           alert("Bitte geben Sie Ihren Nachnamen ein.");
           document.Formular.Nachname.focus();
           return false;
          }
          if (document.Newsform.Mail.value == "Ihre E-Mail Adresse") {
           alert("Bitte geben Sie Ihre E-Mail Adresse ein.");
           document.Formular.Email.focus();
           return false;
          }
          if (document.Newsform.Mail.value.indexOf('@') == -1) {
           alert("Keine gueltige E-Mail-Adresse.");
           document.Formular.Email.focus();
           return false;
          }
          if (document.Newsform.Funktion.value == "") {
           alert("Bitte geben Sie an, ob Sie sich für den Newsletter an- oder abmelden.");
           document.Formular.Funktion.focus();
           return false;
          }
         }
        //-->
        </script>

      HTML:

      <form action="/cgi-bin/mailtog.exe" method="POST" name="Newsform" onSubmit="return checkform()">
      <input type="text" name="Mail" value="Ihre E-Mail Adresse" size="30"><br>
      <input type="text" name="Vorname" size="11" value="Vorname">
      <input type="text" name="Nachname" size="11" value="Nachname"><br>
      <input type="radio" value="anmelden" name="Funktion"> Anmelden <input type="radio" value="abmelden" name="Funktion"> Abmelden <input type="submit" name="submit" value="Senden"><br>
      </form>

      1. Probiere es mal damit:

        (Die Radio-Buttons lassen sich so nicht abfragen!)

        Uli

        <script type="text/javascript">
          <!--
           function checkform() {
            if (document.Newsform.Vorname.value == "")  {
               alert("Bitte geben Sie Ihren Vornamen ein.");
               document.Newsform.Vorname.focus();
              return false;
             }
             if (document.Newsform.Nachname.value == "") {
             alert("Bitte geben Sie Ihren Nachnamen ein.");
             document.Newsform.Nachname.focus();
             return false;
            }
            if (document.Newsform.Mail.value == "") {
             alert("Bitte geben Sie Ihre E-Mail Adresse ein.");
             document.Newsform.Mail.focus();
             return false;
            }
            if (document.Newsform.Mail.value.indexOf('@') == -1) {
             alert("Keine gueltige E-Mail-Adresse.");
             document.Newsform.Mail.focus();
             return false;
            }

        }
          //-->
          </script>

        HTML:

        <form action="/cgi-bin/mailtog.exe" method="POST" name="Newsform" onSubmit="return checkform()">
        <input type="text" name="Mail" value="Ihre E-Mail Adresse" size="30"><br>
        <input type="text" name="Vorname" size="11">
        <input type="text" name="Nachname" size="11"><br>
        <input type="radio" value="anmelden" name="Funktion"> Anmelden <input type="radio" value="abmelden" name="Funktion"> Abmelden <input type="submit" name="submit" value="Senden"><br>
        </form>

      2. Hallo Hans,

        document.Formular.Vorname.focus();

        ^^^^^^^^
        Hier musst du statt "Formular" den Namen des Formulars angeben (in deinem Fall: "Newsform").

        Also so:
                 document.Newsform.Vorname.focus();

        Bei den anderen Feldern natürlich genauso, dann funktioniert's.

        Viel Erfolg,
        Robert

        1. Hallo Hans,

          document.Formular.Vorname.focus();
                            ^^^^^^^^
          Hier musst du statt "Formular" den Namen des Formulars angeben (in deinem Fall: "Newsform").

          Oh Mist. Hab's vor lauter Javascript nicht gesehen -_-'
          Jetzt geht's, danke.

          1. Die Radio-Buttons lassen sich so trotzdem nicht abfragen....

            Die Abfrage nach   ....Vorname.value == "Vorname"
                                                     ^^^^^^^^
            wird Dich bestimmt auch nicht glücklich machen.

            Ich hatte Dir vor 15 min Dein ganzes repariertes Script schon gepostet.

            Uli

            1. Die Radio-Buttons lassen sich so trotzdem nicht abfragen....

              Ja, das hast du schon gesagt. Mit diesem Problem schlage ich mich vorläufig mal selber herum.

              Die Abfrage nach   ....Vorname.value == "Vorname"
                                                       ^^^^^^^^
              wird Dich bestimmt auch nicht glücklich machen.

              Doch :P

              Ich hatte Dir vor 15 min Dein ganzes repariertes Script schon gepostet.

              Wobei mir als Schnell-Leser die Veränderungen im Focus-Teil nicht aufgefallen sind (sorry), und ich mich gewundert habe warum du "mein" Skript nochmals postest.

              1. Hehe, passiert....

                if (Newsform.Funktion[0].checked==false && Newsform.Funktion[1].checked==false)
                {
                alert("Bitte geben Sie an, ob Sie sich für den Newsletter an- oder abmelden.");
                return false;
                }

                Grüsse
                Uli

                1. Hehe, passiert....

                  Ohh... Danke :D