|
J a v a s c r i p t II. |
|
|
Fehlerprüfung per JavaScript II.
Weitere Modifikationen hinsichtlich der Fehlerprüfung, insbesondere bezüglich der Email-Adresse.
Nachstehend das Formular, indem Du die diese Modifikationen testen kannst, nachdem Du Dich (unterhalb des Formulares) mit den Erklärungen vertraut gemacht hast.
Textfeld: DEIN NAME (der Anwender soll seinen Namen eingeben):
Prüfung: Sind Ziffern in der Zeichenkette?.
Das Feld wurde bisher auf eine leere Zeichenkette und auf die Länge der Eingabe gescheckt.
Damit der Anwender keine Zahlen eingibt (wie "007" oder "nr1"), erfolgt eine weitere Abfrage wie folgt:
if(!isNaN (document.mailer.d_name.value))
{
alert ("Nur Buchstaben bitte");
document.mailer.d_name.focus();
return false;
}
Die Funktion "isNaN" (Abkürzung: engl. 'is not a number', zu deutsch: 'ist keine Zahl' ) prüft die Eingabe auf Ziffern.
Der Script-Code liest sich wie folgt:
Wenn (if) der Eingabewert des Feldes namens "d_name" ungleich ( ! ) der Aussage "ist keine Zahl" ist, dann gib eine "alert-Fehlermeldung aus".
Diese doppelte Verneinung (nicht gleich/keine Zahl) bedeutet:
Wenn eine Zahl enthalten ist, dann gib eine "alert-Fehlermeldung aus".
Textfeld: DEINE E-MAIL (der Anwender soll seine Email eingeben):
Prüfung:
Unerlaubte Zeichen in einer Email-Adresse/
Wurde ein Punkt NACH dem "@-Zeichen" eingegeben? /
Wurde versehentlich mehr als ein "@-Zeichen" eingetippt?/
Tauchen NACH dem Punkt 2-4 Zeichen auf?
.
Dieses Feld wurde vorab auf eine leere Zeichenkette und auf das Vorhandensein der Zeichen "@" und "." geprüft.
Jetzt wird die Email-Adresse im Hinblick auf unerlaubte Zeichen durchgesehen.
var zeichen="/ ;:,äüö";
eingabe=document.mailer.d_mail.value;
laenge=eingabe.length;
for( i=0;i<laenge;i++ )
{
badchar=eingabe.charAt(i);
if (zeichen.indexOf(badchar)>-1)
{
alert("Die Zeichen \n Slash(/),\n Doppelpunkt (:),\n Semikolon (;),\n
Komma (,)\n und Leerzeichen ( )\n sowie deutsche Umlaute (ä,ü,ö) \n
sind in einer Email nicht erlaubt." );
document.mailer.d_mail.focus();
return false;
}
}
Die nicht erlaubten Zeichen , wie Slash, Doppelpunkt, Semikolon, Komma, Leerzeichen sowie deutsche Umlaute, werden in der Variable "zeichen" gespeichert.
Die Variable "laenge" speichert die Eingabelänge.
Mit einer "for-Schleife" werden alle Ziffern-Positionen (charAt)innerhalb der Zeichenkette durchlaufen. "charAt" heisst soviel wie engl: "Character at (position)", zu deutsch: Ziffer an Stelle x.
Diese Ziffern-Positionen werden in der Variable "badchar" gespeichert und mit der Methode "indexOf()" auf bestimmte Zeichen überprüft.
Grösser als "-1" ( >-1 )bedeutet: In der Zeichenkette enthalten, so dass ggfls. die "alert-Fehlermeldung" ausgegeben wird.
Sind mehrere "@-Zeichen in der Email-Adresse enthalten?
atPosition=document.mailer.d_mail.value.indexOf('@');
if(document.mailer.d_mail.value.indexOf('@',atPosition+1)>-1)
{
alert ("Du hast versehentlich mehr als ein '@-Zeichen' eingegeben.");
document.mailer.d_mail.focus();
return false
}
In der Variable "atPosition" wird das erste Vorkommen des "@-Zeichens" ( indexOf ('@') ) gespeichert.
Dann erfolgt die Abfrage, ob nach dem "@-Zeichen" (atPosition+1) weitere "@-Zeichen" in der Zeichenkette enthalten sind.
Grösser als "-1" ( >-1 )bedeutet auch hier: 'Ja, in der Zeichenkette enthalten', so dass ggfls. die "alert-Fehlermeldung" ausgegeben wird.
Taucht irgendwo NACH dem "@-Zeichen" auch der Punkt auf?
Bisher prüften wir ja nur das generelle Vorhandensein des Punktes, jetzt soll dieser aber irgendwo nach dem "@-Zeichen" stehen.
if(document.mailer.d_mail.value.indexOf('.',atPosition)==-1)
{
alert ("An irgendeiner Stelle NACH dem '@-Zeichen'
sollte ein Punkt folgen.");
document.mailer.d_mail.focus();
return false
}
Hier wird die Variable "atPosition" weiterverwendet, in der ja die Position des "@-Zeichens" gespeichert ist.
Mit "indexOf()" wird abgefragt, ob ein Punkt dem "@-Zeichen" folgt.
Wenn kein Punkt nach dem "At-Zeichen" enthalten (== -1 ) ist, erfolgt die "alert-Hinweisbox".
Jetzt folgt die Analyse der TopLevelDomain.
Folgen nach dem Punkt mindestens 2 - 4 Buchstaben ?
punktPosition=document.mailer.d_mail.value.lastIndexOf('.');
if(punktPosition+3>document.mailer.d_mail.value.length)
{
alert("Nach dem Punkt müssen noch mindestens 2 Zeichen folgen. ")
return false
}
if(punktPosition+5<document.mailer.d_mail.value.length)
{
alert("Bitte mindestens 2, aber NICHT mehr
als 4 Zeichen nach dem Punkt.\n
Zum Beispiel: \
meinemail@.de \n
meinemail@.com \n
meinemail@.info \n")
return false
};
Das letzte Vorkommen eines Punktes innerhalb der Zeichenkette wird mit der Methode "lastIndexOf()" in der Variable "punktPosition" gespeichert.
Die "if-Abfrage" untersucht die Differenz zwischen der letzten Position des Punktes plus (+) eine bestimmte Anzahl von Zeichen und der Länge der Eingabe.
Abfrage nach 2 Zeichen nach dem Punkt:
Ist die Position des Punktes +3 Zeichen (punktPosition+3) grösser als die Länge der Eingabe ( > document.mailer.d_mail.value.length)?
Abfrage nach maximal 4 Zeichen nach dem Punkt:
Ist die Position des Punktes +5 Zeichen (punktPosition+5) kleiner als die Länge der Eingabe ( < document.mailer.d_mail.value.length)?
Zu beachten ist:
Bei den Rückgabewerten (und damit auch bei der Abfrage) wird statt der 2 (für 2 Zeichen nach dem Punkt) eine 3 zurückgegeben
und bei der 4 (für mindestens 4 Zeichen nach dem Punkt) eine 5.
Das liegt an der "JavaScript-Zählweise", welche ja bei 0 beginnt.
Reset-Button: LÖSCHEN ( der Anwender hat die Möglichkeit die Eingaben zu löschen):
Verbesserung: Nachfrage vor Löschvorgang
<input type="Reset" value="Löschen"
onclick="return confirm ('Willst Du wirklich alle
Eingaben löschen?')"; >
Mit der Methode "confirm()" (engl: bestätigen) wird für den Lösch-Button eine kleine Sicherung eingebaut.
Das Ereignis wird mit "onclick" ausgelöst und direkt beim "Reset-Button" im "body-Bereich" eingetragen.
QUELLTEXT, komplette HTML-Seite mit Formular und JavaScript-Fehlerprüfung I. und II.:
© www.on-mouseover.de | |
|