timex: zweidimaensionales array?!

abend zusammen,

irgend jemand eine idee, wie ich die folgenden funktion verkuerzen kann?!

nach den einzelnen ueberpreufungen kommt immer die selbe prozedur. also alles ab ok = false; ...

mit einem einfachen array komme ich hier nicht weiter...

fragt freundlich,
timex.

function checkForm() {
 var ok = true;
 fokus = true;

if (checkText("vorname")) {
 ok = false;
 fokusItem("vorname");
 switchItem("vorname",1,1);
 } else {
 switchItem("vorname",0,0);
}

if (checkText("nachname")) {
 ok = false;
 fokusItem("nachname");
 switchItem("nachname",1,1);
 } else {
 switchItem("nachname",0,0);
}

if (!checkPostalCode(searchFormObject("plz").value)) {
 ok = false;
 fokusItem("plz");
 switchItem("plz",1,1);
 } else {
 switchItem("plz",0,0);
}

if (checkText("ort")) {
 ok = false;
 fokusItem("ort");
 switchItem("ort",1,1);
 } else {
 switchItem("ort",0,0);
}

if ((!checkPhoneNumber(searchFormObject("telefon").value)) || (checkText("telefon"))) {
 ok = false;
 fokusItem("telefon");
 switchItem("telefon",1,1);
 } else {
 switchItem("telefon",0,0);
}

if (!checkMail(searchFormObject("mail").value)) {
 ok = false;
 fokusItem("mail");
 switchItem("mail",1,1);
 } else {
 switchItem("mail",0,0);
}

if (checkRadioCheck("checkBox")) {
 ok = false;
 fokusItem("checkBox");
 switchItem("checkBox",1,1);
 } else {
 switchItem("checkBox",0,0);
}

if (checkRadioCheck("radioButton")) {
 ok = false;
 fokusItem("radioButton");
 switchItem("radioButton",1,1);
 } else {
 switchItem("radioButton",0,0);
}

if (!ok)
 return ok;

}

// -->
</script>

  1. hi,

    irgend jemand eine idee, wie ich die folgenden funktion verkuerzen kann?!

    da du keinerlei anhaltspunkte lieferst, was funktionen wie checkText(), fokusItem() oder switchItem() bei dir machen, ist keine pauschale antwort möglich.

    statt aber z.B. mit
    document.formularname.feldname
    auf ein formularfeld zuzugreifen, kannst du auch die alternative schreibweise
    document.forms["fomularname"].elements["feldname"]
    benutzen - wobei du dann hier auch gut eine (array-)variable für den feld- oder auch den formnamen einsetzen kannst,
    document.forms["fomularname"].elements[variablemitdemfeldnamen] oder
    document.forms["fomularname"].elements[feldnamenarray[15]]

    gruss,
    wahsaga

    1. da du keinerlei anhaltspunkte lieferst, was funktionen wie checkText(), fokusItem() oder switchItem() bei dir machen, ist keine pauschale antwort möglich.

      also,

      switchItem zeigt bei fehlerhafter eingabe einen fehlertext an, bei korrekter eingabe wird der fehltext wieder ausgeblendet

      fokusItem setzt den fokus auf ein fehlerhaftes eingabefeld

      alle weiteren functionen ueberpruefen mit hilfe von regular expressions auf richtige benutzereingaben. diese funktionen rufen folgende funktion auf, um das zugehoerige formularelement auffindig zu machen ...

      function searchFormObject(id) {
       var f;
       for (var i=0; i<document.forms.length; i++) {
        f = document.forms[i];
        for (var j=0; j<f.elements.length; j++)
         if (f.elements[j].name==id)
         return f.elements[id];
       }
       return null;
      }

      gruss,
      timex

  2. abend zusammen,

    irgend jemand eine idee, wie ich die folgenden funktion verkuerzen kann?!

    nach den einzelnen ueberpreufungen kommt immer die selbe prozedur. also alles ab ok = false; ...

    mit einem einfachen array komme ich hier nicht weiter...

    das funktioniert dann nur fuer die ersten beiden abfragen

    var zupruefen = new Array("vorname","nachname");

    for(i=0;i<zupruefen.length;i++) {

    if (checkText([zupruefen[i]])) {
     ok = false;
     fokusItem([zupruefen[i]]);
     switchItem([zupruefen[i]],1,1);
     } else {
     switchItem([zupruefen[i]],0,0);
    }

    }

    ab hier ist es dann nicht mehr funktional ...

    if (!checkPostalCode(searchFormObject("plz").value)) {
     ok = false;
     fokusItem("plz");
     switchItem("plz",1,1);
     } else {
     switchItem("plz",0,0);
    }

    if (checkText("ort")) {
     ok = false;
     fokusItem("ort");
     switchItem("ort",1,1);
     } else {
     switchItem("ort",0,0);
    }

    if ((!checkPhoneNumber(searchFormObject("telefon").value)) || (checkText("telefon"))) {
     ok = false;
     fokusItem("telefon");
     switchItem("telefon",1,1);
     } else {
     switchItem("telefon",0,0);
    }

    if (!checkMail(searchFormObject("mail").value)) {
     ok = false;
     fokusItem("mail");
     switchItem("mail",1,1);
     } else {
     switchItem("mail",0,0);
    }

    if (checkRadioCheck("checkBox")) {
     ok = false;
     fokusItem("checkBox");
     switchItem("checkBox",1,1);
     } else {
     switchItem("checkBox",0,0);
    }

    if (checkRadioCheck("radioButton")) {
     ok = false;
     fokusItem("radioButton");
     switchItem("radioButton",1,1);
     } else {
     switchItem("radioButton",0,0);
    }

    if (!ok)
     return ok;

    }

    // -->
    </script>