Alle InputFelder (Type=text) durchlaufen und explizit abfragen

messmar

Erfahrenes Mitglied
Hallo zusammen,

ich habe ein Blackout gerade und komme nicht weiter ;-(

Folgendes: ich abe ein Formular mit ca. 24 TextFledern und möchte alle Abfragen angefangen mit dem Namen und soweiter.

Das mit dem Namen hat schon geklappt, aber dann wenn ich diese abfrage, ob die leer sind oder nicht, dann klappt es nicht.

Ich komme gar nicht rein in die zweite For-Schleife... kann einer bitte helfen?

HTML:
for(i=0; i<document.forms[0].length; i++){
    if(document.forms[0].elements[i].type == 'text'){
        var getName = document.forms[0].elements[i].name;

        var allEmpty = true;

        if(getName.match('FName')){
            
            var getThemAll = document.forms[0].elements[i];
            
            alert(getThemAll.value);

            for(var j=0; j<=getThemAll.length; j++) {
                if(getThemAll.value[j] != ''){
                    alert('j' + getThemAll.value[j]);
                    allEmpty = false;
                }

              
                if (allEmpty){
                    alert('es sind alle leer');
                }else{
                    alert('das passt');
                }
            }
        }
    }
}

HTML:
<form ....>
<input type="text" name="friend_01_FName" value="xxx" class="inputText_01" />
<input type="text" name="friend_01_LName" value="yyy" class="inputText_02" />
<input type="text" name="friend_01_eMail" value="" class="inputText_02" />
<input type="text" name="friend_02_FName" value="" class="inputText_03" />
<input type="text" name="friend_02_LName" value="" class="inputText_04" />
<input type="text" name="friend_02_eMail" value="" class="inputText_04" />
<input type="text" name="friend_03_FName" value="" class="inputText_03" />
<input type="text" name="friend_03_LName" value="" class="inputText_04" />
<input type="text" name="friend_03_eMail" value="" class="inputText_04" />
<input type="text" name="friend_04_FName" value="" class="inputText_03" />
<input type="text" name="friend_04_LName" value="" class="inputText_04" />
<input type="text" name="friend_04_eMail" value="" class="inputText_04" />
</form>

vielen Danke und Gruß
Messmar
 
Hi,

im Augenblick enthält getThemAll in jedem Schleifendurchlauf genau ein Element, falls der Name des aktuell bearbeiteten Elements den Teilstring FName enthält.

Was genau möchtest du machen? Sollen die Element mit dem Teilstring FName daraufhin geprüft werden, ob mindestens ein Wert enthalten ist oder alle leer sind?

Ciao
Quaese
 
Hi,

danke schon mal und sorry für die sehr verspätete Antwort...

Was genau möchtest du machen?

Ich wollte alle Textfelder für FirstName, LastName und danach email durchlaufen, abchecken, ob alle leer sind und wenn ja, dann einen Fehler ausgeben.

Der user muss mindesten ein Feld pro Serie (Firstname, Lastname und email) eingeben.

Danke und gruß
Messmar
 
Hi,

du könntest ein Array erstellen, dessen Schlüssel den zu suchenden Teilstrings entsprechen. Als Wert wird ein Objekt zugewiesen, über das ermittelt werden kann, ob mindestens ein Feld innerhalb einer Gruppe ausgefüllt wurde.

Über den Schlüssel wird getestet, ob es sich beim aktuellen Textfeld um ein gesuchtes Element handelt. Ist das Feld gefüllt, wird das Objekt entsprechend geändert.

Beispiel:
Code:
function testeMich(){
  // Array mit den zu testenden Namen als Schlüssel
  var arrTest = [];
  arrTest["FName"] = {ok: false};
  arrTest["LName"] = {ok: false};
  arrTest["eMail"] = {ok: false};

  for(i=0; i<document.forms[0].elements.length; i++){
    if(document.forms[0].elements[i].type == 'text'){
      var getName = document.forms[0].elements[i].name;

      for(var strKey in arrTest){
        // Falls das aktuelle Element den gewünschen Teilstring enthält
        if(getName.match(new RegExp(strKey))){
          // Falls das aktuelle Element NICHT leer ist -> Flag setzen
          if(document.forms[0].elements[i].value!=""){
            arrTest[strKey].ok = true;
            break;
          }
        }
      }
    }
  }

  for(var strKey in arrTest){
    if(!arrTest[strKey].ok)
      alert(strKey + " muss mindestens einen Wert enthalten.");
  }

  return arrTest;
}
Ciao
Quaese
 
Hi Quaese,

Hi,
du könntest ein Array erstellen....

vielen Dank ;-)

Das ist auch ne Möglichkeit und zwar besser wie meine, da ich ne nicht so elgenate Lösung gecodet habe:

HTML:
function checkFields(){
                        var allFnameEmpty = true;
                        var allLnameEmpty = true;
                        var allEmailEmpty = true;

                        for(i=0; i<document.forms[0].length; i++){
                            if(document.forms[0].elements[i].type == 'text'){
                                var getName = document.forms[0].elements[i].name;

                                if(getName.match('FName')){
                                    var getThemAll = document.forms[0].elements[i];

                                    if(getThemAll.value != ''){
                                        allFnameEmpty = false;
                                    }
                                }

                                if(getName.match('LName')){
                                    var getThemAll = document.forms[0].elements[i];

                                    if(getThemAll.value != ''){
                                        allLnameEmpty = false;
                                    }
                                }

                                if(getName.match('eMail')){
                                    var getThemAll = document.forms[0].elements[i];

                                    if(getThemAll.value != ''){
                                        allEmailEmpty = false;
                                    }
                                }
                            }
                        }

                        if (allFnameEmpty){
                            alert('xxxx');
                            return false;
                        }

                        if (allLnameEmpty){
                            alert('xxxx');
                            return false;
                        }

                        if (allEmailEmpty){
                            alert('xxxx');
                            return false;
                        }

                        alert('xxxx');
                            return false;
                        }
}
 

Neue Beiträge

Zurück