Claus Peter: Dynamisch erzeugtes Formular mit Javascript prüfen

Hallo,

bei meinem Projekt habe ich leider noch keine Lösung für folgendes Problem gefunden:

Zustandsbeschreibung:
Vor dem Abschicken einer Seite möchte ich mit JavaScript eventuelle Eingabefehler abfangen. (....onSubmit="return ChkFormular()")
Die Eingabefelder einer Seite werden mit unterschiedlichen Funktionen geprüft.
Die Formularfelder werden dynamisch per CGI erzeugt.

Mein Problem:
Beim Schreiben des Javascripts weiß ich noch nicht, welche Formularfelder zu prüfen sind. Die Felder haben meist auch unterschiedliche Namen bzw. IDs, oft auch mit einem Index versehen.

Wie kann ich nun ein JavaScript schreiben, welches alle in dem aktuellen FORM vorhandenen Felder prüft, und dabei eine für das Feld spezifische Prüfung vornimmt?

Gibt es die Möglichkeit, z.B. in einem INPUT-Tag einen "Funktionspointer" zu übergeben, der auf die JavaScript Prüfroutine verweist?

Die Lösung:
Ja, da seid Ihr gefragt. Mit meinem Latein bin ich am Ende. Für brauchbare Lösungsansätze danke ich schon mal im voraus.

mfg

Claus Peter

  1. Hallo,

    bei meinem Projekt habe ich leider noch keine Lösung für folgendes Problem gefunden:

    Zustandsbeschreibung:
    Vor dem Abschicken einer Seite möchte ich mit JavaScript eventuelle Eingabefehler abfangen. (....onSubmit="return ChkFormular()")
    Die Eingabefelder einer Seite werden mit unterschiedlichen Funktionen geprüft.
    Die Formularfelder werden dynamisch per CGI erzeugt.

    Mein Problem:
    Beim Schreiben des Javascripts weiß ich noch nicht, welche Formularfelder zu prüfen sind. Die Felder haben meist auch unterschiedliche Namen bzw. IDs, oft auch mit einem Index versehen.

    mit window.document.forms[....].elements[...] kannst du alle Formularelemente erfassen (http://selfhtml.teamone.de/javascript/objekte/elements.htm). mit der Eigenschaft type kannst du rausfinden was für eine Art von Element es ist. Der Rest liegt an dir und deinem Problem.

    Struppi.

    1. ....

      mit window.document.forms[....].elements[...] kannst du alle Formularelemente erfassen (http://selfhtml.teamone.de/javascript/objekte/elements.htm). mit der Eigenschaft type kannst du rausfinden was für eine Art von Element es ist. Der Rest liegt an dir und deinem Problem.

      Struppi.

      Hallo Struppi,

      wenn Du mir jetzt noch sagen kannst, wie ich die Elemente gleichen Typs unterscheiden und unterschiedliche Prüfscripte aufrufen kann, ist es perfekt.

      mfg

      Claus Peter

      1. hi,

        wenn Du mir jetzt noch sagen kannst, wie ich die Elemente gleichen Typs unterscheiden und unterschiedliche Prüfscripte aufrufen kann, ist es perfekt.

        die information findest du doch bereits auf der verlinkten seite.
        augen auf!

        gruss,
        wahsaga

        1. Hi,

          die information findest du doch bereits auf der verlinkten seite.
          augen auf!

          Sach datt doch gleich! Also, ich habs grad mal so durchgestept und ich denke, so funzt es:

          function chkFormular()
            {
              var i, rp;

          for(i=0; rp=document.forms[0].elements[i]; i++)
              {
                if(null != rp.onchange) {
                  // hier ggf. typ und namen pruefen
                  if(!rp.onchange()) return false;
                }
              }
              return true;
            }

          Danke an Euch beide für die Hilfe.

          mfg

          Claus Peter

      2. ....

        mit window.document.forms[....].elements[...] kannst du alle Formularelemente erfassen (http://selfhtml.teamone.de/javascript/objekte/elements.htm). mit der Eigenschaft type kannst du rausfinden was für eine Art von Element es ist. Der Rest liegt an dir und deinem Problem.

        wenn Du mir jetzt noch sagen kannst, wie ich die Elemente gleichen Typs unterscheiden und unterschiedliche Prüfscripte aufrufen kann, ist es perfekt.

        Wie schon gesagt Augen auf ;-)

        und ein bisschen probieren, wie gesagt es kommt auf deine konkreten vorstellungen an, was zu tun ist.

        aber ein Tipp, geh mal alle elemente durch (sie haben eine eigenschaft length) und lass dir den 'type' ausgeben.

        Struppi.