Andreas: Eingabekontrolle eines Formularfeldes in einer Tabelle

Hallo

ich habe ein Problem bei der Eingabekontrolle eines Formularfeldes.
Hierzu habe ich mich an dem Beispiel von SELFHTML in einer abgespeckten Form orientiert:

<html>
<head>
<title>Formulareingaben </title>
<script type="text/javascript">
<!--
function chkFormular()
{
 if(document.Formular.Zahl.value == "") {
   alert("Bitte Zahl eingeben!");
   document.Formular.Zahl.focus();
   return false;
  }
 var chkZ = 1;
 for(i=0;i<document.Formular.Zahl.value.length;++i)
   if(document.Formular.Zahl.value.charAt(i) < "0"
   || document.Formular.Zahl.value.charAt(i) > "9")
     chkZ = -1;
 if(chkZ == -1) {
   alert("Zahlsangabe keine Zahl!");
   document.Formular.Zahl.focus();
   return false;
  }
}
//-->
</script>
</head>
<body bgcolor="#EEEEEE" text="#000000">

<h1>Formular</h1>

<form name="Formular" action="http://selfaktuell.teamone.de/cgi-bin/formview.pl" method="post" onSubmit="return chkFormular()">
<pre>
Zahl:    <input type="text" size="40" name="Zahl">
Formular: <input type="submit" value="Absenden"><input type="reset" value="Abbrechen">

</pre>
</form>

</body>
</html>

OK - bis hier kann ich dem noch folgen. Mein Problem besteht darin, dass ich ein Feld überprüfen möchte, welches in einer Tabelle ist. Das Problem hierbei besteht darin, dass die Tabelle dynamisch erstellt wird und das zu prüfende Feld mehrmals auftreten kann (pro Datensatz einmal z.B. Alter von Teilnehmern)

TeilnehmerA  AlterA <--Eingabefeld
TeilnehmerB  AlterB <--Eingabefeld
   etc.

An dieser Stelle mächte ich wissen, wie das statement auszusehen hat

if(document.Formular.elements[0].value == "")

funktioniert für das Alter des TeilnehmerA und für TeilnehmerB klappt es mit
if(document.Formular.elements[1].value == "")

Nun möchte ich aber alle Eingabefelder (Alter d. Teilnehmers) der Tabelle prüfen.

Falls Ihr mir hier weiterhelfen könntet, wäre ich Euch sehr dankbar.
MFG
Andreas

  1. Hi,
    einen Code kann ich dir nicht geben, da ich so etwas noch nicht programmiert hab.
    Aber ich habe eine Idee, welche umsetzbar ist.

    Also:

    1.Bei der dynamischen erstellung der input Felder hängst du noch ein Index an den Namen des Feldes dran sieht dann so aus:

    for($i=0;$bis ende;$i++)
    {
    <input type="text" name="teilnehmer_alter[i]" value=""></input>
    }

    2.Letzt kannst du die Eingabefelder überprüfen. Am besten machst du das auch mit einer for Schleife.

    Schreibst du da ein Script für eine Ferienfreizeit oder ähnliches, dann können für uns gerne mal austauschen, habe schon einige für die Homepage unserer Freizeit geschrieben.

    Mit freundlichen Grüßen
    John

    1. Hallo John, erst mal thanks für Deine schnelle Reaktion.

      Die Idee mit dem Index habe ich auch so ähnlich gehabt, also bei mir heisst das Feld dann alter[i], aber wie um Himmels Wille mache ich das mit der Schleife?

      Irgendwie müsste doch nun diese Schleife in die folgende Funktion implementiert werden....

      function chkFormular()
      {
       if(document.Formular.Zahl.value == "") {
         alert("Bitte Zahl eingeben!");
         document.Formular.Zahl.focus();
         return false;

      ....sonst wird wie gesagt nur das eine Feld geprüft?

      Danke im voraus
      Andreas

      1. Hi,
        Wie erzeugst Du den die dynamische Tabelle?

        Die Schleife sollte dann etwa so aussehen:

        ende=Zahl.length;    //ermitteln der Array länge

        for(i=0;ende;i++)
        {

        if(document.Formular.Zahl.value[i] == "") {
           alert("Bitte Zahl eingeben an der Pos." + i);
           document.Formular.Zahl[i].focus();
           return false;

        }

        Sollte so gehen, wäre mein erster Versuch den ich starten würde.

        Viel Spaß noch.

        MFG
        John

        1. hi,

          Die Schleife sollte dann etwa so aussehen:

          na ja, noch nicht so ganz ...

          ende=Zahl.length;    //ermitteln der Array länge

          for(i=0;ende;i++)

          for(i=0; i<ende; i++)

          {

          if(document.Formular.Zahl.value[i] == "") {

          feldname = "alter["+i+"]";
          if(document.forms["formularname"].elements[feldname].value = "") {

          alert("Bitte Zahl eingeben an der Pos." + i);

          document.Formular.Zahl[i].focus();

          diesen zugriff ebenfalls wie oben im if() ersetzen, oder besser gleich weglassen - denn bei mehreren fehlern ist es unsinnig, den cursor blitzschnell durch mehrere inputfelder hüpfen zu lassen.

          return false;
          }

          gruss,
          wahsaga