Andreas: Return False Anweisung wird ignoriert^

Hi Leute,

ich habe eine ein wenig komplexere Seite bei der ich nicht immer die Form abschicken möchte.

Deshalb habe ich ein Hidden Feld gemacht, dass mit einer 1 gefüllt wird, falls die Form nicht abgeschickt werden soll.

Jetzt fülle ich das Feld mit 1 und er kommt auch in die Return false Anweisung, nur er schickt die Form trotzdem ab.

Hier mein Code:

<script>
 function checkob()
 {
  if(document.form.obweiter.value == 1)
  {
   return false;
  }
 }

</script>

<form name="form" method="post" action="save.htm" onsubmit="return checkob()">

Weiß jemand eine Lösung für mich?

lg,
Andreas

  1. Hallo Andreas

    Jetzt fülle ich das Feld mit 1 und er kommt auch in die Return false Anweisung, nur er schickt die Form trotzdem ab.

    Das glaube ich nicht, dass er in den Returnzweig kommt. Denn es muesste lauten:

    if(document.form.obweiter.value == "1")

    (Werte aus Formularfeldern sind Zeichenketten, keine Zahlen!)

    viele Gruesse
      Stefan Muenz

    1. Hallo Stefan,

      wow super, dass DU dich um mein Problem annimmst.

      Ich habe deinen Rate befolgt, nur es passiert noch immer. Leider muss ich dir widersprechen - er kommt WIRKLICH in den Returnzweig - ich teste es mit einem Alert

      function checkob()
       {
        if(document.form.obweiter.value == "1")
        {alert("asdf")
         return false;
        }
       }

      Dieses Alert macht er mir, dh. er kommt dort rein, auch wenn es eine Zeichenkette ist.

      Komisch das ganze!

      Ich vermute, dass irgendwo anders der Hund begraben ist, aber Danke für deine Hilfe.

      lg,
      Andreas

    2. Hallo Stefan

      Das glaube ich nicht, dass er in den Returnzweig kommt. Denn es muesste lauten:

      if(document.form.obweiter.value == "1")

      (Werte aus Formularfeldern sind Zeichenketten, keine Zahlen!)

      Ist bei == vollkommen egal. Hier erfolgt eine automatische Typenkonvertierung.

      document.form.obweiter.value == "1" und document.form.obweiter.value == 1
      werden gleich behandelt. In beiden Fällen erhält man true.

      document.form.obweiter.value === "1" und document.form.obweiter.value === 1 unterscheidet zusätzlich nach Typ. Hier erhält man im ersten Fall true und im zweiten false.

      Zu Andreas, ich vermute irgendwo gibts es  einen JS-Fehler, du hast wahrscheinlich nur ein Teil des Scriptes gepostet. Bei welchen Browser das auftritt schreibst du ja auch nicht.
      Ansonsten ist "form" ein etwas sehr unglücklich gewählter Name.

      Viele Grüße

      Antje

      1. Naja, da wir alle wissen wie "toll" JS manchmal ist, bzw. reagiert kann ich nur empfehlen mit "" zu arbeiten.

        Gruss,
        CS

        Ist bei == vollkommen egal. Hier erfolgt eine automatische Typenkonvertierung.

        1. Hallo CS

          Naja, da wir alle wissen wie "toll" JS manchmal ist, bzw. reagiert kann ich nur empfehlen mit "" zu arbeiten.

          Standardjavascript und etwas anderes ist das nicht, wird  normalerweise sauber abgearbeitet. Bislang kenne ich bezüglich der Typkonvertierung nur im NN 3 Probleme und auch dort nur, wenn ein Array Elemente besitzen sollte, die von unterschiedlichen Typ sind.

          Ansonsten gilt, wie bei allen Programmiersprachen, es kommt darauf an, diese zu verstehen und sinnvoll anwenden zu können.

          Viele Grüße

          Antje