Willi Martens: Formularüberprüfung mit einer Schleife?

Ich habe folgende Formularüberprüfung für ein Formularfeld definiert. (Funktioniert auch wunderbar)

<!--
function chkFormular()
{
 if(document.Formular.a1.checked == true  && document.Formular.a2.value == "")  {
   alert("Bitte geben Sie die Anzahl, zu dem von Ihnen gewählten Artikel an!");
   document.Formular.a2.focus();
   return false;
  }

else {
  for(i=0;i<document.Formular.a2.value.length;++i){
    if(document.Formular.a2.value.charAt(i) < "0" || document.Formular.a2.value.charAt(i) > "9"){
     alert("Bitte eine Ziffer eingeben");
     document.Formular.a2.focus();
     return false;
    }
  }
 }
}
//-->

Nun möchte diese auf viele andere Felder anwenden. Da es den Quelltext wahnsinig aufblechen würde die gleiche Abfrage für jedes einzelne Formularfeld hinzuschreiben, habe ich mir gedacht man könne dass evtl. mit einer for-Schleife lösen. In dem ich die Schleife, den Feldnamen (hier a1 und a2) austauschen lasse. Sprich a3 und a4; a5 und a6; a7 und a8 usw.

In etwa so:
------------------------
var z = 24; #anzahl der Paare

for( i=1 ; z>0 ; i=i+2 ){
 j=i+1;
 if(document.Formular.i.checked == true  && document.Formular.a2.value == "")  {
   alert("Bitte geben Sie die Anzahl, zu dem von Ihnen gewählten Artikel an!");
   document.Formular.j.focus();
   return false;
  }

else {
  for(i=0;i<document.Formular.j.value.length;++i){
    if(document.Formular.j.value.charAt(i) < "0" || document.Formular.a2.value.charAt(i) > "9"){
     alert("Bitte eine Ziffer eingeben");
     document.Formular.j.focus();
     return false;
    }
 z=z-1;
}
-----------------------

Das Problem ist, dass die Zähler i und j Zahlen wie 1 o. 2 o. 3 produzieren, meine Felder heißen aber a1 , a2 , a3 usw. Habe auch schon versucht die Felder nach Ziffern umzubenenen doch dann funktioniert die if-Abfrage nicht.

Ich bin ein absoluter Anfänger was Programmierung angeht und weiss garnicht ob dieses mit JavaScript überhaupt möglich ist.

Währe für Hife sehr dankbar!

MfG Willi.

  1. moin willi,

    Ich denke mal, dein Script wird so etliche Bugs haben, um die zu kümmern ich heute Abend leider keine Zeit habe, aber wie das mit dem "a" davorkleben geht, kann ich dir ohne nähere recherchen verraten:

    du klebst einfach einen String zusammen, z.B.
    for(var i=0; i < einNumerischerWert; i++) {
      elementName = "a" + i;
    }

    stünde der Zähler nun auf 5, wäre das Ergebnis a5.
    Aber wie gesagt, deine for-schleifen sind in sich merkwürdig, seeeehhr merkwürdig.

    liebe grüße, uschi

  2. <!--
    function chkFormular()
    {
     for(var i=1; i < 10; i++) {
      var elementName = "a" + i;
      alert(elementName);

    if(document.Formular.elementName.checked == true)  {
       alert("Bitte geben Sie die Anzahl, zu dem von Ihnen gewählten Artikel an!");
       document.Formular.elementName.focus();
       return false;
      }
     }
    }

    //-->

    so funktioniert es leider auch noch nicht.

    Hat vielleicht jemand eine Idee?

    1. Hallo Willi

      function chkFormular()
      {
      for(var i=1; i < 10; i++) {
        var elementName = "a" + i;
        alert(elementName);

      if(document.Formular.elements[elementName].checked == true)  {

      alert("Bitte geben Sie die Anzahl, zu dem von Ihnen gewählten Artikel an!");
         document.Formular.elements[elementName].focus();
         return false;
        }
      }
      }

      Du kannst die Variable elementName auch weglassen indem Du gleich schreibst:
        document.Formular.elements["a" + i]

      Grüße
      Andreas