Information Technology Reference
In-Depth Information
3.4.3
Fehlerbehandlung mit »setCustomValidity()«
Wenn Ihnen all die bisher vorgestellten Möglichkeiten zur Fehlerbehandlung
noch nicht ausreichend erscheinen, können Sie sich auch selbst eine Funk-
tion zur Überprüfung des Inhalts programmieren. Im folgenden Beispiel wird
ein Eingabefeld vom Typ
email
definiert, wodurch der Browser schon die Über-
prüfung der gültigen E-Mail-Adresse übernimmt. Zusätzlich möchten wir aber
noch drei E-Mail-Domains ausschließen.
var invalidMailDomains = [
'hotmail.com', 'gmx.com', 'gmail.com' ];
function checkMailDomain(item) {
for (var i=0; i<invalidMailDomains.length; i++) {
if (item.value.match(invalidMailDomains[i]+'$')) {
item.setCustomValidity
('E-Mail-Adressen von '
+invalidMailDomains[i]+' sind nicht erlaubt.');
} else {
item.setCustomValidity('');
}
item.checkValidity();
}
}
Jedes Element im Array
invalidMailDomains
wird mit dem Wert des
input
-Ele-
ments verglichen. Die JavaScript-Funktion
match()
arbeitet mit regulären Aus-
drücken, weshalb wir an den Domain-Namen noch ein
$
-Zeichen anhängen,
das das Ende der Zeichenkette spezifiziert. Stimmen die Zeichenketten über-
ein, so wird die
setCustomValidity
-Funktion aufgerufen und ihr die entspre-
chende Fehlermeldung übergeben. Handelt es sich nicht um einen Domain-
Namen aus dem Array, wird
setCustomValidity()
mit einer leeren Zeichenkette
aufgerufen. Intern wird dadurch die Variable
validationMessage
an das
input
-
Element angehängt, die Opera anschließend auch korrekt anzeigt (vergleiche
Abbildung 3.15). Der abschließende Aufruf der
checkValidity
-Funktion löst die
Überprüfung aus und führt zu der eben erwähnten Fehlermeldung.