Ein Javascript zum prüfen von input Feldern.

Ein genereller Ansatz, um Eingabefelder zu prüfen.

Dazu werden die Eingabefelder z.B. mit der Klasse class="required" versehen und der Event Handler wird in das form Element eingebunden:

form action="..." onSubmit="return verify(this);".../form

Nach dem Prüfen haben die entsprechenden Elemente zusätzlich die Klasse "valid", falls die Prüfung "true" ergab, oder "invalid", falls die Prüfung "false" ergab.

Weitere Klassen:

required
true, falls Inhalt vorhanden, false sonst.
number
true, falls Inhalt vorhanden und numerisch, oder falls leer. Nur für input type="text".
email
true, falls Inhalt vorhanden und eine e-mail Adresse, oder falls leer. Nur für input type="text".
url
true, falls Inhalt vorhanden und eine url, oder falls leer. Nur für input type="text".

Für select class="required" gilt: valid (true), falls mindestens eine Option ausgewählt ist, und deren Wert nicht -1 ist.

Für input type="checkbox" class="required" sowie input type="radio" class="required" gilt, dass mindestens ein Element der Gruppe (eine Gruppe wird durch gleiches "name" Attribut definiert) muss ausgewählt sein. Es reicht, ein Element der Gruppe mit class="required" zu versehen. Die ganze Gruppe wird nach Prüfung mit class="valid" oder class="invalid" versehen.

Für input type="text" kann es sinnvoll ein, die Klassen zu kombinieren. Zum Beispiel:

input type="text" class="required email"

Dies ergibt true, falls Inhalt vorhanden und dieser eine e-mail Adresse ist.

Die hinzugefügte Klasse "valid" resp. "invalid" kann zum Stylen per css genutzt werden. Z.B.:

.invalid { background-color: red; }

Falls statt der simplen Aussage valid oder invalid noch eine Alertbox mit Nachricht gewünscht wird, kann statt der Funktion verify(this) die Funktion alertErr(this) verwendet werden. Diese ruft ihrerseits verify(this) auf, und falls das Ergebnis invalid ist, sucht es alle Labels label der invaliden Eingabefelder heraus, sammelt diese und zeigt sie anschließend in einer Alertbox an.

form action="..." onSubmit="return alertErr(this)"

Download