Formularfehlerabfrage

Trikatz

Grünschnabel
Hallo, ich bin gerade bei einer Fehlerabfrage für ein Formular nach dem Muster:

function Validator(theForm)
{

if (theForm.vorname.value == "")
{
alert("Geben Sie einen Wert in das Feld \"Vorname\" ein.");
theForm.vorname.focus();
return (false);
}

if (theForm.nachname.value == "")
{
alert("Geben Sie einen Wert in das Feld \"Nachname\" ein.");
theForm.nachname.focus();
return (false);
}

if (theForm.strasse.value == "")
{
alert("Geben Sie einen Wert in das Feld \"Strasse\" ein.");
theForm.strasse.focus();
return (false);
}

if (theForm.nummer.value == "")
{
alert("Geben Sie einen Wert in das Feld \"Hausnummer\" ein.");
theForm.nummer.focus();
return (false);
}

return (true);
}

Fehlerabfrage funktioniert auch. Allerdings habe ich festgestellt: wenn im Formular eines der hier abgefragten Formularfelder (z.B. "Nachname") nicht existiert (z.B. auskommentiert ist), wird die ganze Funktion nicht weiter durchlaufen, sondern das Formular wird abgeschickt. Warum ist das so? Ich dachte immer, erstmal wird die gesamte Funktion durchlaufen und wenn ein Feld nicht vorhanden ist, erstaml die if-Abfrage für das nächste Feld durchgeführt. Oder wie funktioniert das?

Grüße Trikatz
 
Wenn in einer Funktion ein Fehler auftaucht, wird sie (je nach Browsereinstellung mit einer entsprechenden Fehlermeldung) verlasssen.
Wenn du das vermeiden willst, prüfe erst, ob das entsprechende Formularfeld existiert, bevor du drauf zugreifst.
Alternativ kannst du auch eine Fehlerbehandlung mittels try/catch einsetzen.
 
Also sieht die Funktion ein fehlendes Formularfeld als Fehler (eine entsprechende Fehlermeldung habe ich nicht bekommen, das Formular wird dann einfach abgeschickt, obwohl es nicht fertig geprüft ist) und bricht deshalb die Prüfung ab. Kann man die Funktion nicht irgendwie dazu bewegen, trotz fehlendem Formularfeld mit der Prüfung des nächsten Eingabefeldes weiterzumachen? Das einzelne Formularfelder nicht immer aufgerufen werden, ist kein Fehler, sondern Teil des PHP-Scriptes, das manche Felder nur bei Bedarf ausgibt. Würde die Felder aber trotzdem gern prüfen.

Trikatz
 
Herrgott, du hast deine Antwort doch schon. Frage mit if (document.theForm.NAME) ab oder benutz try/catch, wobei letzteres die krüzere und damit wohl bessere Wahl wäre.
HTML:
 function Validator(theForm)
   {
    try {
   if (theForm.vorname.value == "")
   {
   alert("Geben Sie einen Wert in das Feld \"Vorname\" ein.");
   theForm.vorname.focus();
   return (false);
   }
    
   if (theForm.nachname.value == "")
   {
   alert("Geben Sie einen Wert in das Feld \"Nachname\" ein.");
   theForm.nachname.focus();
   return (false);
   }
    
   if (theForm.strasse.value == "")
   {
   alert("Geben Sie einen Wert in das Feld \"Strasse\" ein.");
   theForm.strasse.focus();
   return (false);
   }
    
   if (theForm.nummer.value == "")
   {
   alert("Geben Sie einen Wert in das Feld \"Hausnummer\" ein.");
   theForm.nummer.focus();
   return (false);
   return (true);
   }
    } catch (e) {}
  }
oder
HTML:
 function Validator(theForm)
   {
    
   if (theForm.vorname && theForm.vorname.value == "")
   {
   alert("Geben Sie einen Wert in das Feld \"Vorname\" ein.");
   theForm.vorname.focus();
   return (false);
   }
    
   if (theForm.nachname && theForm.nachname.value == "")
   {
   alert("Geben Sie einen Wert in das Feld \"Nachname\" ein.");
   theForm.nachname.focus();
   return (false);
   }
    
   if (theForm.strasse && theForm.strasse.value == "")
   {
   alert("Geben Sie einen Wert in das Feld \"Strasse\" ein.");
   theForm.strasse.focus();
   return (false);
   }
    
   if (theForm.nummer && theForm.nummer.value == "")
   {
   alert("Geben Sie einen Wert in das Feld \"Hausnummer\" ein.");
   theForm.nummer.focus();
   return (false);
   }
    
   return (true);
   }
 
Sorry Con-f-use, hatte mir den Link mit try/catch angesehen, aber das funktioniert bei mir nicht, weil das fehlende Formularfeld bzw. der fehlende Wert ja später nicht nachgeliefert wird. Hab das trotzdem mal ausprobiert, ging aber nicht. Aber die Sache mit if (document.theForm.Name) scheint zu funktionieren (muss es noch im ganzen Script testen). Das war also bei Sven mit : "prüfe erst ob das entsprechende Formularfeld existiert", gemeint. Ich wußte einfach nicht wie ich das prüfen soll, JavaScript ist nicht so unbedingt meine Stärke. Vielen Dank für die Hilfe. Trikatz
 

Neue Beiträge

Zurück