Michelle: Formular-Feld (array) ansprechen in Funktion

Beitrag lesen

Hallo zusammen

Ich versuche gerade, dieses Skript (http://aktuell.de.selfhtml.org/artikel/javascript/formkontrolle/">) anzupassen und scheitere leider kläglich...

In meinem Formular hat es neben Textfeldern auch Checkboxen, Radiobuttons und Select Multiple Felder. Die Namen dieser Felder müssen ja mit einem [] enden, damit ich sie später via PHP auswerten kann.

Mein Skriptlein funktioniert für alle Felder ausser eben diese Array-Felder und ich komm nicht drauf, wie ich das ansprechen soll.

Hier kommt mal der Anfang der angepassten Funktion:

function validate(f,myarray) {
  for (var i=0; i < myarray.length; i++) {
    var feld = f.elements[myarray[i][0]];

if (myarray[i][1].indexOf('e') > -1) {
      // Pflichtfeld
      if (feld.type=="text" || feld.type=="password" || feld.type=="textarea" || feld.type=="file") {
        // Text-Feld, Passwort-Feld, Textarea oder Datei Upload
        if(!checkLeerText(feld)) {
          alert ("Das Feld " + feld.name + " ist leer!");
        }
        else {
          alert ("Das Feld " + feld.name + " ist ausgefüllt.");
        }
      }
      else if (feld.type=="select-multiple" || feld.type=="select-one") {
        // Select-Liste (single oder multiple)
        if(!checkLeerSelect(feld)) {
          alert ("Das Feld " + feld.name + " ist leer!");
        }
        else {
          alert ("Das Feld " + feld.name + " ist ausgefüllt.");
        }
      }
      else if (feld.type=="checkbox" || feld.type=="radio") {
        // Checkbox oder Radio-Button
        if(!checkLeerRadioCheckbox(f, feld.name)) {
          alert ("Das Feld " + feld.name + " ist leer!");
        }
        else {
          alert ("Das Feld " + feld.name + " ist ausgefüllt.");
        }
      }
      else {
        alert ("Fehler...");
      }
    }
  }
}

Die ganzen Alerts sind einfach eine Hilfe für mich...

Der "myarray" sieht so aus:

var var_1 = new Array()
  var_1[0] = new Array('textfeld1','e','Bitte füllen Sie das Pflichtfeld aus.','');
  var_1[1] = new Array('textarea1','e','Bitte füllen Sie das Pflichtfeld aus.','');
  var_1[2] = new Array('checkbox1[]','e','Bitte wählen Sie mindestens eine Box aus.','');
  var_1[3] = new Array('radiobutton1[]','e','Bitte wählen Sie eine Option aus.','');
  var_1[4] = new Array('select1a','e','Bitte wählen Sie einen Eintrag aus der Liste.','');
  var_1[5] = new Array('select1b','e','Bitte wählen Sie einen Eintrag aus der Liste.','');
  var_1[6] = new Array('select1c[]','e','Bitte wählen Sie mindestens einen Eintrag aus der Liste.','');

Wenn ich die Funktion so aufrufe, lande ich bei checkbox1 und radiobutton1 beim Alert "Fehler...". Beim Feld select1c (das ist ein Select multiple Feld) klappt es aber interessanterweise!

Wenn ich nach der Zeile var feld = ... den folgenden Code einfüge:

if (!feld.type)
    {
      var feldarray = myarray[i][0];
      var feld = f.elements[feldarray];
    }

Passiert genau das selbe wie oben. Aber es klappt auch nicht, wenn ich direkt var feld = f.elements['checkbox1[]'] eingebe, und wenn ich diese Nachricht (href="http://forum.de.selfhtml.org/archiv/2006/8/t134399/">) richtig verstanden habe, müsste es so doch gehen?

Ich blick da echt nicht mehr durch und wäre sehr froh, wenn mir jemand einen Tipp geben könnte.

Vielen Dank und liebe Grüsse, Michelle