Jörg: Javascript - Validierung von Formular-Feldern

Beitrag lesen

»» Habe schon ohne Probleme andere Validierungen vorgenommen, hier scheitere ich aber. Ständig bekomme ich die Meldung, das Element sei nicht definiert oder habe den Wert NULL.

»»
»» Hinzu kommt, dass die aufgebaute Liste der Orte eben variabel ist, dafür auch das Helper-Formular.
»»
also es soll erstmal nur geprüft werden, ob in den eingabefeldern zahlen stehen?

function checkInput() {
  // [ref:self812;javascript/objekte/regexp.htm@title=regulärer ausdruck]
  var regex = /^\d+$/;
  // [ref:self812;javascript/objekte/forms.htm@title=alle formelemente aus dem "liste" formular]
  var formControls = document.forms["liste"].elements;
  // einfach über alle formelemente rüber
  for (var i = 0, len = formControls.length; i < len; i += 1) {
    var formControl = formControls[i];
  {...}
  }
  return true;
}


>   
  
Vielen Dank für die konstruktive Antwort, das hat mich weitergebracht. Ich hatte gedacht, dass ich ein Element so ansprechen kann:  
~~~javascript
var strName = 'abc';  
var objElem = document.formname.elements[strName];

Offensichtlich gibt es hier Probleme. Also durchlaufe ich jetzt die Elements und arbeite mit dem Index:
var objElem = document.forms["liste"].elements[i];

Kopfschüttel...

Ok, hier mein vorerst endgültiger Code - vielen, vielen Dank für deine Hilfe,
Gruß, Jörg

  
function sl_form_edit_check() {  
var sl_text_1 = 'In der Liste wurde ein Wert eingetragen, der weder gespeichert noch verarbeitet werden kann.\n\nBitte den folgenden Eintrag korrigieren:\n\n  >>> ';  
  
// regulärer ausdruck  
var regex = /^\d+$/;  
  
// alle formelemente aus dem "liste" formular  
var formControls = document.forms["liste"].elements;  
  
// Werte aus dem Helper-Formular  
var data = document.helper.content.value.split(SepChar);	  
var dmax = data.length;					  
  
// Alle Elemente des Formulars durchlaufen,  
// Es werden nur die Elemente berücksichtigt, die in Helper aufgeführt sind:  
for (var i = 0, len = formControls.length; i < len; i += 1) {  
  var formControl = formControls[i];  
  
  // formControl in Helper? Ginge doch bestimmt auch mit RegEx?  
  var inHelper = false;  
  for (j = 0; j < dmax; j += 1) {  
    if (formControl.name == data[j]) {  
    inHelper = true;  
    break;  
    }  
  }  
  
  if (inHelper) {			  
  
  // Wichtig: Es dürfen ausschließlich Felder mit Inhalt geprüft werden,  
  // Leere Felder müssen ignoriert werden:  
  
    var s = formControl.value;  
    if (s.length > 0) {  
      // ... nachprüfen ob sein "value" eine zahl ist mithilfe des regulären ausdrucks von oben  
      if (!regex.test(formControl.value)) {  
        // Anzeigen, was der User nicht richtig gemacht hat:  
        alert(sl_text_1 + document.getElementById(formControl.name).innerHTML + ' == "' + formControl.value + '" <<<' + footer);  
        formControl.focus();  
        return false;  
      }  
    }  
  }  
}  
return true;  
}