Input-Abfrage mit Schleife

meni

Mitglied
Hi zusammen!

Ich arbeite gerade an einem Formular, wo sieben Input-Felder auf leeren Inhalt geprüft werden. Falls das Feld leer ist => gebe Fehlermeldung aus.
In einzelnen Schritten würde sowas wunderbar funktionieren. Da aber die Inputfelder fortlaufende Namen haben, wie: GZahl1, GZahl2, wäre eine Schleife viel praktischer.

Und bei dieser kommt auch mein Problem auf:

Code:
  var allValid = true;
  var checkStr = "";
  for (i = 1;  i < 8;  i++)
  {
    checkStr = "GZahl"+i;

    //Prüfe ob Input-Feld leer ist
    if (theForm.checkStr.value == "")
    {
      allValid = false;
    }  

    //Falls ein leeres gefunden wurde, direkt return - false
    if (!allValid)
    {
      alert("Bitte geben Sie Ihre Zahl ein.");
      theForm.checkStr.focus();
      return (false);
    }

  }

Soweit bin ich schon, nur will das ganze nicht so ganz funktionieren. Irgendwie scheiter es bei der Abfrage, ob das Input-Feld leer ist.

Ich hoffe ihr könnt mir helfen.

Gruß meni
 
Probiers mal so:
Code:
f = document.formularname.elements;

for(e = 0; e < f.elements; ++e)
  {
    if(f[e].name.match(/^GZahl\d+$/) && !f[e].value.match(/\S/))
      {
        alert("Bitte geben Sie Ihre Zahl ein.");
        f[e].focus();
        return(false);
      }
  }
Das Problem ist bei dir, dass
Code:
if (theForm.checkStr.value == "")
nicht funktioniert, weil du damit garnicht auf diese Formularfelder zugreifst, sondern auf eines mit Namen "checkStr".
Wenn du Elemente auf diese Art referenzieren wolltest, müsstest du mit eval arbeiten:
Code:
if (eval('theForm.'+checkStr+'.value == ""')
 
Ok! Danke schonmal. Wieder etwas dazugelernt. Dennoch funktionert etws noch nicht:

Code:
f = theForm.elements;

for(e = 0; e < f; ++e)
  {
    if(f[e].name.match(/^GZahl\d+$/) && !f[e].value.match(/\S/))
      {
        alert("Bitte geben Sie Ihre Zahl ein.");
        f[e].focus();
        return(false);
      }
  }

Der geht die for-Schleife garnicht an ... weil der wohl irgendwie Probleme mit dem f hat. Sobald ich da nen Wert eingebe z.B. 22 (Anzahl Formularfelder), funktioniert alles wunderbar.
 
Oh sorry...war wohl noch etwas zu früh am morgen für mich:
Code:
f = document.formularname.elements;

for(e = 0; e < f.length; ++e)
  {
    if(f[e].name.match(/^GZahl\d+$/) && !f[e].value.match(/\S/))
      {
        alert("Bitte geben Sie Ihre Zahl ein.");
        f[e].focus();
        return(false);
      }
  }
 
Hey super. Danke schonmal!

Hätte da aber noch eine Frage: Wie schafe ich es das er noch zusätzlich überprüft, ob die Zahl zwischen 1 und 49 liegt? Bei mir funktioniert das irgendwie nicht.

Danke schonmal!

Gruß meni
 
Sry für die späte Antwort. Aber hier der Code, Danke für weitere Hilfe.

Code:
  f = theForm.elements;
  for(e = 0; e < f.length; ++e)
  {
  	
    if(f[e].name.match(/^GZahl\d+$/) && f[e].value < 1 && f[e].value > 49)
    {
      alert("Bitte geben Sie Ihre Glückszahl ein.");
      f[e].focus();
      return(false);
    }
            
  }
 
Hab den Fehler gefunden: Die Inputeinagbe ist ja ersmtal ein String. Um zu testen muss man ihn erstmal mittels "parseInt()" in ein Integerwert umwandeln.
Gruß meni
 

Neue Beiträge

Zurück