samke: function validate_form()

Hallo zusammen,

ich habe ein Formular, wo die Radioboxen über folgendes Script auf Inhalt geprüft werden soll.

-------------------------------------------------------
<script language="JavaScript">
function validate_form() {
  validity = true;

if (document.umfrage.3.checked == false )
        { validity = false; alert('Fehler ID: 3.'); }

}

if (validity) { document.umfrage.submit (); }
}

function check_empty(text) {
  return (text.length > 0); // gibt false zurück wenn leer
}
</script>
-------------------------------------------------------

Es kommt aber die Fehlermeldung: ')' erwartet

Wenn ich als "Radioboxnamen" nicht die 3 eintrage sondern ein Wort, dann kommt kein Fehler. Wieso ist das so. Ich muss da aufjedenfall eine Zahl eintragen, bzw. die Radioboxen so bennen.
Hat jemand eine Idee warum das so ist, bzw wie ich das Problem lösen kann???

Danke für die Hilfe
Gruß

  1. Moin

    Ich muss da aufjedenfall eine Zahl eintragen, bzw. die Radioboxen so bennen.

    Der Wert des name-Attrubuts muss mit einem Buchstaben beginnen.

    Hat jemand eine Idee warum das so ist, bzw wie ich das Problem lösen kann???

    Du musst sowieso das name-Attribut ändern, danach erübrigt sich das Problem.

    Gruß
    rfb

    --
    Man kann einen Menschen nichts lehren, man kann ihm nur helfen, es selbst zu entdecken.
    (Galileo Galilei)
    1. Moin,

      danke für die Antwort. Ich habe jetzt den Namen von "3" auf "fragenid3" geändert.
      Wenn ich nur eine Radiobox habe funktioniert das auch alles, nur wenn ich mehrere zur Auswahl habe, passiert nichts.

      <input type="radio" name="fragenid1" id="fragenid1" value="1" /> 1
      <input type="radio" name="fragenid1" id="fragenid1" value="2" /> 2
      <input type="radio" name="fragenid1" id="fragenid1" value="3" /> 3
      <input type="radio" name="fragenid1" id="fragenid1" value="4" /> 4
      <input type="radio" name="fragenid1" id="fragenid1" value="5" /> 5
      <input type="radio" name="fragenid1" id="fragenid1" value="6" /> 6

      Warum ist das so? Oder gibts einen ganz anderen Lösungsansatz?

      Gruß

      1. Moin

        <input type="radio" name="fragenid1" id="fragenid1" value="1" /> 1
        <input type="radio" name="fragenid1" id="fragenid1" value="2" /> 2
        <input type="radio" name="fragenid1" id="fragenid1" value="3" /> 3
        <input type="radio" name="fragenid1" id="fragenid1" value="4" /> 4
        <input type="radio" name="fragenid1" id="fragenid1" value="5" /> 5
        <input type="radio" name="fragenid1" id="fragenid1" value="6" /> 6

        diese Radio-Button kannst du der Reihe nach über den Namen als document.umfrage.fragenid[0] bis document.umfrage.fragenid[5] (wenn umfrage noch der name des Formulars sein sollte) abfragen (wie ein Array).
        Die IDs sind falsch, denn IDs müssen einmalig sein, sod ass du nicht 6mal die gleiche ID vergeben kannst.

        Gruß
        rfb

        --
        Man kann einen Menschen nichts lehren, man kann ihm nur helfen, es selbst zu entdecken.
        (Galileo Galilei)
        1. Moin

          Korrektur, hatte die 1 übersehen

          diese Radio-Button kannst du der Reihe nach über den Namen als document.umfrage.fragenid1[0] bis document.umfrage.fragenid1[5] abfragen

          Gruß
          rfb

          --
          Man kann einen Menschen nichts lehren, man kann ihm nur helfen, es selbst zu entdecken.
          (Galileo Galilei)
          1. Das verstehe ich leider nicht ganz. Wieso kann die ID nicht die gleiche sein. Anhand dieser werden doch die RadioBoxen mit einander verbunden, oder nicht? So habe ich ja jetzt 6 Boxen die ausgefüllt sein müssen. Ich möchte ja nur, das eine von den 6 angewählt wurde.

            Zur Info, ich gebe die Frage über ein PHP Script aus ner MySQL Datenbank aus. Die Seite kann also unterschiedlich viele Fragen und Antworten haben. Jenachdem muss sich halt auch das JavaScript anpassen.

            Korrektur, hatte die 1 übersehen

            diese Radio-Button kannst du der Reihe nach über den Namen als document.umfrage.fragenid1[0] bis document.umfrage.fragenid1[5] abfragen

            1. Wieso kann die ID nicht die gleiche sein.

              Es ist vorgeschrieben, dass eine ID in einem HTML-Dokument nur ein einziges Mal vorkommen darf.

              Anhand dieser werden doch die RadioBoxen mit einander verbunden, oder nicht?

              Nein, das geschieht über das name-Attribut. Muß so geschehen, weil eine ID nur ein einziges Mal pro Dokument vorkommen darf.

              So habe ich ja jetzt 6 Boxen die ausgefüllt sein müssen. Ich möchte ja nur, das eine von den 6 angewählt wurde.

              Das stellst du durch den Formularelementtyp "radio" ja sicher.

              1. ich versteh das nicht...
                Wenn ich jetzt das Formular abschicke, und nichts anwähle, kommen zwei Fehlermeldungen und nach zweimal OK wird das Formular aber dennoch abgeschickt. Warum kommt nicht nur eine Fehlermeldung und es passiert dann nichts weiter?

                Kann mir mal einer anhand dieses Beispiel sagen, wie das richtig muss?

                <script language="JavaScript">
                function validate_form() {
                  validity = true;

                if (document.umfrage.fragenid1[0].checked == false )
                        { validity = false; alert('Fehler ID: 1 - 0.'); }
                if (document.umfrage.fragenid1[1].checked == false )
                        { validity = false; alert('Fehler ID: 1 - 1.'); }

                if (validity) { document.umfrage.submit (); }
                }

                function check_empty(text) {
                  return (text.length > 0);
                }
                </script>

                <input type="radio" name="fragenid1" id="0" value="1" />
                <input type="radio" name="fragenid1" id="1" value="2" />

                Danke!!!

                1. Moin

                  Wie hast du denn die Prüffunktion eingebunden?
                  Wenn du sie zB. so einbindest

                  <form action="tudies" onsubmit="pruefe()">

                  wird "tudies" in jedem Fall ausgeführt.

                  Abhilfe bringt

                  <form action="tudies" onsubmit="return pruefe()">

                  wobei die Funktion pruefe mit

                  return wert;

                  verlassen werden muss.
                  Nur wenn wert==false ist wird "tudies" nicht ausgeführt, bei wert==true oder keinem Rückgabewert schon.

                  Gruß
                  rfb

                  --
                  Man kann einen Menschen nichts lehren, man kann ihm nur helfen, es selbst zu entdecken.
                  (Galileo Galilei)