Florian: Funktion bei Abschicken eines Forumulares funkt. nicht

Hallo,

ich habe folgendes Problem:

Ich hab mal angefangen ein Gästebuch zu schreiben. Zunächst hab ich mal angefangen ein Formular zu definieren, in das der Name, optional die E-Mail und eben der Text selber eingegeben werden soll.
Damit man nicht einfach ein Formular ohne Namen absenden kann, möchte ich diesen Fall gerne per Javascript abfangen.

Mein Formular sieht so aus:

<form name="Eintrag" action="" onsubmit="return pruefName();">
 <table border="0" cellpadding="3">
  <tr>
   <td> <b> Name: <sup> <b> * </b> </sup> </b> </td>
   <td> <input name="Name" type="text" size="30" maxlength="30"> </td>
  </tr>
  <tr>
   <td> <b> E-Mail: </b> </td>
   <td> <input name="E-Mail" type="text" size="30" maxlength="30"> </td>
  </tr>
  <tr>
   <td align="right" valign="top"> <sup> <b> * </b> </sup> </td>
   <td> <textarea name="Eingabe" rows="15" cols="60"></textarea> </td>
  </tr>
  <tr>
   <td> </td>
   <td> <input type="submit" value="Absenden"> </td>
  </tr>
 </table>
</form>

Meine Javascript Funktion sieht so aus:

function pruefName()
{
 if(document.Eintrag.Name.value == '')
 {
  alert('Sie haben keinen Namen eingegeben!');
  document.Eintrag.Name.focus();
  return false;
 }
 else
 {
  alert('Alles ok');
  return true;
 }
}

Die Meldung "Alles ok" fliegt natürlich noch raus. Problem ist im Augenblick aber, dass keine der beiden alert Boxen angezeigt wird. Wenn ich auf absenden klicke, dann passiert einfach gar nix!
Wäre nett, wenn man mir da helfen könnte! :)

Mfg Florian

  1. Salut Florian,

    Ich bin mir nicht sicher ob dein Syntax erlaubt ist. Versuch es mal so:

    anstelle von:
    onsubmit="return pruefName();"

    setzt du:
    onSubmit="return pruefName()"

    Gruss hansi

    1. hat leider alles nichts gebracht!

      Hab "Name" mal in nam geändert => tut sich nix :(
      onsubmit in onSubmit geändert => tut sich nix :(
      E-Mail in EMail geändert => tut sich nix :(
      Wobei E-Mail ja für die Funktion auch nicht wichtig ist.

      Sonst noch Ideen?

      1. Hallo,

        vielen Dank schon mal für die Mühe!

        es freut mich schon mal zu hören, dass es scheinbar prinzipiell funktioniert, aber warum bei mir nicht?

        Online anschauen geht leider nicht, hab noch keinen Webspace.
        Ich hab mir mal eine seperate Datei "test.html" geschrieben, die nur die wichtigen Sachen enthält. Die funktioniert weder im Firefox, noch im IE! Sie sieht folgendermaßen aus:

        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
               "http://www.w3.org/TR/html4/strict.dtd">

        <html>

        <head>
        <title> Neuer Eintrag </title>
        <link rel="stylesheet" type="text/css" href="formate.css">
        <script type="text/css">
        function pruefName()
        {
         if(document.Eintrag.Name.value == '')
         {
          alert('Sie haben keinen Namen eingegeben!');
          document.Eintrag.Nam.focus();
          return false;
         }
         else
         {
          alert('Alles ok');
          return true;
         }
        }
        </script>
        </head>

        <body>
        <form name="Eintrag" action="" onSubmit="return pruefName();">
         <table border="0" cellpadding="3">
          <tr>
           <td> <b> Name: <sup> <b> * </b> </sup> </b> </td>
           <td> <input name="Nam" type="text" size="30" maxlength="30"> </td>
          </tr>
          <tr>
           <td> <b> E-Mail: </b> </td>
           <td> <input name="EMail" type="text" size="30" maxlength="30"> </td>
          </tr>
          <tr>
           <td align="right" valign="top"> <sup> <b> * </b> </sup> </td>
           <td> <textarea name="Eingabe" rows="15" cols="60"></textarea> </td>
          </tr>
          <tr>
           <td> </td>
           <td> <input type="submit" value="Absenden"> </td>
          </tr>
         </table>
        </form>
        </body>

        </html>

        Vielleicht hilft das ja... :(

        1. Moin

          fällt dir bei

          <script type="text/css">

          was auf?

          Gruß
          rfb

          1. Hallo! :)

            Erste ganz wichtige Sache: Es funktioniert jetzt!

            Der absolute Noob Fehler "text/css" ist beim erstellen der test datei auf die schnelle passiert! :) Das war in der richtigen Datei schon ok.

            Interessanterweise funktionierte dann die test Datei problemlos, während die (eigentlich identische) richtige Datei nicht funktionierte. Ich hab dann einfach die Sachen aus der Test Datei kopiert und in die richtige Datei eingefügt. Es hat sich am Quelltext nichts geändert! Neu abgespeichert und jetzt funktioniert es! :)))

            Woran das jetzt genau gelegen hat, weiß ich nicht, aber es funzt jetzt und ich bin glücklich! :)

            Vielen Dank!

            Mfg Florian

        2. Hi,

          es freut mich schon mal zu hören, dass es scheinbar prinzipiell funktioniert, aber warum bei mir nicht?

          weil du noch zwei entscheidende Fehler drin hast. Der erste ist wirklich putzig:

          <script type="text/css">

          ^^^
          Das ---------------------  betrachten meine Testbrowser (IE, Firefox) nicht als irgendetwas, worum sie sich besonders kümmern müssten. ;-)
          Dein Script existiert daher faktisch gar nicht! Firefox weist mich in der Javascript-Konsole auch darauf hin: "Error: pruefName is not defined" Der IE geht dagegen stillschweigend darüber hinweg, er meldet nicht einmal einen Fehler, obwohl er die JS-Funktion auch nicht aufruft.

          Und dann hast du noch ein Namensproblem - aber das könnte jetzt auch ein Abschreibfehler sein:

          if(document.Eintrag.Name.value == '')
            document.Eintrag.Nam.focus();
             <td> <input name="Nam" type="text" size="30" maxlength="30"> </td>

          Ich habe mal an allen drei Stellen die einheitliche Bezeichnung "Nam" eingetragen - und schon geht's.  :-)

          So long,
           Martin

          --
          Fettflecke werden wieder wie neu, wenn man sie regelmäßig mit etwas Butter einschmiert.
    2. Hallo,

      anstelle von:
      onsubmit="return pruefName();"
      setzt du:
      onSubmit="return pruefName()"

      dann wird es entweder falsch (wenn das Dokument in XHTML verfasst ist) oder es macht keinen Unterschied (in HTML).

      Generell ist die durchgehend kleingeschriebene Variante der Eventhandler vorzuziehen: In Javascript werden sie per definitionem kleingeschrieben, die zugehörigen Attribute in XHTML auch, weil hier für Tags und Attribute generell Kleinschreibung im Standard festgelegt ist. In HTML ist zwar auch eine gemischte Schreibweise zulässig, weil HTML im Gegesatz zu XHTML nicht case-sensitive ist - aber warum sollte man hier von den sonstigen guten Gepflogenheiten abweichen?

      Florian, kann man sich das Problemkind irgendwo mal online ansehen? Der Code-Ausschnitt, den du gezeigt hast, lässt nämlich keine Fehler erkennen, die das Aufrufen des onsubmit-Handlers verhindern würden.

      So long,
       Martin

      --
      F: Was sagt die kleine Kerze zur großen Kerze?
      A: Ich gehe heute nacht aus!
  2. Hello,

    Wäre nett, wenn man mir da helfen könnte! :)

    bin ob der Uhrzeit vielleicht auch schon etwas Nachtblind, aber ich würde generell mal den Namen "Name" und den Namen "E-Mail" ändern, im ersten Fall wegen der möglichen Konfusion mit der .name-Eigenschaft in JavaScript (auch wenn das eigentlich gut gehen sollte) und im zweiten Fall, weil dir der Bindestrich beim Zugriff ein paar Probleme machen könnte.

    MfG
    Rouven

    --
    -------------------
    Let Bygones Be Bygones  --  Robert Pitscottie: "Chronicles of Scotland"
  3. Habe es unter Firefox und Netscape getestet, da funktioniert es.