Sonja: return false; funktioniert nicht

Hallo,

ich habe ein Formular, dass mit Javascript überprüft werden soll. Ich sende es dann an eine .asp SEite.
Anscheinend sorgt das return false dafür, dass die Seite noch nicht weitergeschickt wird. Tja, aber bei mir kommt das alter, dann klicke ich ok und hab keine Zeit den fehlenden Nachnamen einzutragen, weil das Formular an die .asp SEite weitergeschickt wird.
Kann mir einer helfen? Warum funktioniert das return false nicht? gibt es noch eine andere Möglichkeit die Seite anzuhalten?

Javascript sieht so aus:

function ValidForDiff() {
  if (document.kontaktform.nachname.value == "") {
    alert("Bitte geben Sie ihren Nachnamen ein!");
    document.Formular.nachname.focus();
    return false;
  }
    if (document.kontaktform.telefon.value == "") {
    alert("Bitte geben Sie ihre Telefonnummer ein!");
    document.Formular.telefon.focus();
    return false;
  }
}

Formanfang sieht so aus:
<form action="mail_javascript.asp" name="kontaktform" method="POST" onSubmit="return ValidForDiff(this)">

  1. Hallo Sonja,

    du fragst auf =="" ab. Kann es sein, dass in den Feldern schon etwas steht, z.B. ein Leerzeichen?

    Gruß, Jürgen

    1. Hallo Sonja,

      du fragst auf =="" ab. Kann es sein, dass in den Feldern schon etwas steht, z.B. ein Leerzeichen?

      Gruß, Jürgen

      Hallo Jürgen,

      Danke für die Antwort. also beim Value habe ich nichts angeben. Meine Felder sehen so aus (Beispiel Vorname)

      Vorname:<input type="text" name="vorname" size="21" tabindex="2">

      die Abfrage funktioniert ja auch. Er öffnet das richtige altern wenn z.B. nachname leer ist, aber trotzdem sendet er dann das Formular weiter.
      Eigentlich müsste er doch solange warten, bis ich dann den fehlenden nachname eingetragen habe und nochmal auf abschicken klicke?!? (ich überreiche ihm ja return false).

      Hast du vielleicht noch eine Idee?

  2. Hallo,

    <form action="mail_javascript.asp" name="kontaktform" method="POST" onSubmit="return ValidForDiff(this)">

    Könnte es sein, dass einfach ein Semikolon fehlt?
    Welcher Browser ist es denn?

    LG
    Chris

  3. Hallo,

    function ValidForDiff() {
      if (document.kontaktform.nachname.value == "") {
        alert("Bitte geben Sie ihren Nachnamen ein!");
        document.Formular.nachname.focus();

    ^hier wird ein Fehler erzeugt, weil das Formular ja "kontaktform" heißt. Deshalb wird das return nie erreicht.

    return false;
      }
    Formanfang sieht so aus:
    <form action="mail_javascript.asp" name="kontaktform" method="POST" onSubmit="return ValidForDiff(this)">

    Weißt Du, was Du hier mit dem this übergibst?

    viele Grüße

    Axel

    1. Hallo,

      document.Formular.nachname.focus();
                      ^hier wird ein Fehler erzeugt, weil das Formular ja "kontaktform" heißt. Deshalb wird das return nie erreicht.

      Man sollte die Debugmeldungen beim Entwickeln auch einschalten...:-)

      <script type="text/javascript">

      function ValidForDiff(objekt)
        {
          if (objekt.vorname.value == "")
          {
            alert("Bitte geben Sie ihren Vornamen ein!");
            objekt.vorname.focus();
            return false;
          }
            if (objekt.telefon.value == "") {
            alert("Bitte geben Sie ihre Telefonnummer ein!");
            objekt.telefon.focus();
            return false;
          }
        }

      </script>

      </HEAD>

      <BODY>

      <form action="mail_javascript.asp" name="kontaktform" method="POST" onSubmit="return ValidForDiff(this);">

      <input type="text" name="vorname" size="21" tabindex="1">
        <input type="text" name="telefon" size="21" tabindex="2">

      <input type="submit" name="submit" value="abschicken">

      </form>

      </BODY>

      LG
      chris

      1. Hallo,

        document.Formular.nachname.focus();
                        ^hier wird ein Fehler erzeugt, weil das Formular ja "kontaktform" heißt. Deshalb wird das return nie erreicht.

        Man sollte die Debugmeldungen beim Entwickeln auch einschalten...:-)

        Hallo Chris,

        ohh gott du hast ja sowas von Recht!! mannmann man übersicht aber auch alles wenn man zu lange vor dem Rechner sitzt...schlimmschlimm..

        Was die Debugmeldungen betrifft:

        Ich hab im IE bei Internetoptionen die http Fehlermeldungen abgeschaltet. Eigentlich spuckt er die javascript fehler aus. Diesen aber nicht. Kann ich noch woanders im IE was umstellen, dass ich noch mehr meldungen angzeigt bekomme?

        Ich muss mir mal Mozilla runterladen...da ist das ja eh bessser.

        Danke nochmal!!

        1. Hi Sonja,

          Ich muss mir mal Mozilla runterladen...da ist das ja eh bessser.

          Zum Entwickeln wäre das eine saugute Idee...

          Viele Grüße
          Mathias Bigge

        2. Hallo,

          Kann ich noch woanders im IE was umstellen, dass ich noch mehr meldungen angzeigt bekomme?

          Internetoptionen - Erweitert - Browsing - Scriptfehler anzeigen

          viele Grüße

          Axel

  4. hi,

    Tja, aber bei mir kommt das alter

    Ja ja, davor ist keiner von uns gefeit.
    Wie äußert es sich denn bei dir - Vergesslichkeit, Inkontinenz, ...?

    scnr,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  5. Moin!

    function ValidForDiff() {
      if (document.kontaktform.nachname.value == "") {

    <form onSubmit="return ValidForDiff(this)">

    Wenn du schon eine Referenz auf dein Formular im Funktionsaufruf an die Funktion mitgibst (nämlich "this"), dann solltest du das auch nutzen:

    function ValidForDiff(formular)
      if (formular.nachname.value == "") {
    ...

    Hat den Vorteil, dass es auf den korrekten Formularnamen nicht mehr ankommt, das macht das Skript universeller. Die Notwendigkeit für korrekte Input-Namen entfallen zu lassen ist allerdings etwas aufwendiger. :)

    - Sven Rautenberg

    --
    My sssignature, my preciousssss!