Archivlink: javarea.de Forum > JavaScript > überprüfen
Vollständigen Link anzeigen: javarea.de Forum > JavaScript > überprüfen

Pages: [1]

geschrieben von Herbert1204 am 09.12.2009 - 18:06
Ich habe einmal wieder ein Anliegen.

Ich habe ein Script , was die Formulareingaben auf Richtigkeit und Vollständigkeit überprüfen soll. Hierbei habe ich zwei Textfelder für das Passwort und ein Textfeld für die Postleitzahl.
Dabei soll das System überprüfen, ob bei beiden Textfeldern das gleiche Passwort steht.
Außerdem soll beim Textfeld für die Postleitzahl überprüft werden, ob fünf Ziffern eingetragen wurden.

Hier das Script:


<SCRIPT LANGUAGE="JavaScript">
<!--
// (C) 2002 Klaus Hentschel [ All rights reserved ].
// e-mail: kh@javarea.de
// www: http://www.javarea.de

function validate_form() {
validity = true;
if (!check_empty(document.form.Passwort1.value)){ /* Funktion Namen (Abfrage) */
validity = false;
show('Layer1');show('Layer2'); /* zeige Fehler */
}
if (!check_empty(document.form.Passwort2.value)){ /* Funktion Namen (Abfrage) */
validity = false;
show('Layer1');show('Layer3'); /* zeige Fehler */
}
if (!check_empty(document.form.Postleitzahl.value)){ /* Funktion Namen (Abfrage) */
validity = false;
show('Layer1');show('Layer4'); /* zeige Fehler */
}
if (!check_email(document.form.EMail.value)){ /* Funktion EMail (Abfrage) */
validity = false;
show('Layer1');show('Layer5'); /* zeige Fehler */
}
if (!check_url(document.form.URL.value)){ /* Funktion URL (Abfrage) */
validity = false;
show('Layer1');show('Layer6'); /* zeige Fehler */
}
if (validity);
return validity; /* alle Angaben waren korrekt */
}
function check_empty(text) {
return (text.length > 0); /* gibt false zurück wenn leer */
}
function check_email(address) { /* Email muss (@ und .) enthalten */
if ((address == "") || (address.indexOf ('@') == -1) || (address.indexOf ('.') == -1))
return false;
return true;

}
function check_url(address) { /* URL muss (http:// und .) enthalten */
if ((address == "") || (address.indexOf ('http://') == -1) || (address.indexOf ('.') == -1))
return false;
return true;
}
if (((navigator.appName == "Netscape") && (parseInt(navigator.appVersion.substring(0,1)) >=3))
|| ((navigator.appName == "Microsoft Internet Explorer") && (parseInt(navigator.appVersion.substring(0,1)) >=4)))

{var version=true}

if (document.layers){ /* Browserabfrage: Layer-Object bekannt? */
ns = 1; ie = 0;
}else{
ns = 0; ie = 1;
}
function show(name) {if (ns){ /* Funktion Schicht anzeigen */
document.layers['' + name].visibility = "show";
}else{
document.all['' + name].style.visibility = "visible";
}
}
function hide(name) { /* Funktion Schicht verstecken */
if (ns){
document.layers['' + name].visibility = "hide";
}else{
document.all['' + name].style.visibility = "hidden";
}
}
// -->
</SCRIPT>

<form name="form" method="post" action="mailto:Ihre@mail.de?SUBJECT=Betreff für die Mail" enctype="text/plain" onSubmit="return validate_form(this.form)">
<font class="stn"><b>Passwort:</b></font><br>
<input type="password" size=40 name="Passwort1"><br>

<font class="stn"><b>Passwort wiederholen</b></font><br>
<input type="password" size=40 name="Passwort2"><br>

<font class="stn"><b>Postleitzahl:</b></font><br>
<input type="text" name="Postleitzahl" onKeypress="if(event.keyCode
< 45 || event.keyCode > 57) { event.returnValue = false; } else {if(event.which
< 45 || event.which > 57) returnfalse;}" maxlength="5" size="4"><br>

<font class="stn"><b>Email:</b></font><br>
<input type="text" size=40 name="EMail"><br>
<font class="stn"><b>URL:</b></font><br>
<input type="text" size=40 name="URL"><br>


<input type="submit" onclick="hide('Layer1');hide('Layer2');hide('Layer3');hide('Layer4');hide('Layer5');hide('Layer6')" name="submit" value="Senden"> <input type="reset" onclick="hide('Layer1');hide('Layer2');hide('Layer3');hide('Layer4');hide('Layer5');hide('Layer6')" value="Reset"></form>

<div style="position:absolute; width:450; height:100; z-index:1; left:0; top:300; visibility: show; visibility: visible">

<DIV style="visibility:hide;visibility:hidden;">
<div ID="Layer1" style="width:500px; height:200px; position:absolute; left:10px; top:0px; z-index:1; visibility:hidden;">
<font color="red"><b>Fehler:</b></font>
</DIV>
<div ID="Layer2" style="width:500px; height:200px; position:absolute; left:10px; top:15px; z-index:1; visibility:hidden;">
Bitte Passwort angeben!
</DIV>
<div ID="Layer3" style="width:500px; height:200px; position:absolute; left:10px; top:30px; z-index:1; visibility:hidden;">
Die Passw&ouml;rter stimmen leider nicht &uuml;berein!
</DIV>
<div ID="Layer4" style="width:500px; height:200px; position:absolute; left:10px; top:45px; z-index:1; visibility:hidden;">
Postleitzahl nicht korrekt!
</DIV>
<div ID="Layer5" style="width:500px; height:200px; position:absolute; left:10px; top:60px; z-index:1; visibility:hidden;">
E-Mail nicht korrekt!
</DIV>
<div ID="Layer6" style="width:500px; height:200px; position:absolute; left:10px; top:75px; z-index:1; visibility:hidden;">
URL nicht korrekt!

</DIV>
</DIV>
</DIV>

geschrieben von Danny am 10.12.2009 - 20:21
Hallo Herbert,
zuerst zum Vergleich der beiden Passwörter. Eigentlich hast du alles wichtige schon in deinem Quelltext.

document.form.Passwort1.value enthält den eingegebenen Text von Feld1 und document.form.Passwort2.value analog für Passwortfeld 2.
Nun reicht es diese einfach mittels if(document.form.Passwort1.value == document.form.Passwort2.value) { } zu überprüfen. Das wirst du alleine eingebaut bekommen.

Für die PLZ würde ich eine Überprüfung mittels Regular Expressions vorschlagen. Damit kannst du Strings u.a. auf bestimmte "Muster/Ausdrücke" überprüfen.

Folgendes kleines Beispiel sollte dir es verdeutlichen

HTML-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
var plz = document.form.Postleitzahl.value;

var plzcheck = plz.search(/^([0-9]{5})$/);
if (plzcheck != -1) {
    // PLZ ist in Ordnung
} else {
    // PLZ ist falsch
}


Der Code "sagt" suche im String der im PLZ Feld steht einen Ausdruck der am Anfang des Strings steht (^), aus 5 aufeinanderfolgenden Zeichen ({5}) die zwischen 0 - 9 liegen, also Zahlen ([0-9]) und der am Ende des Strings steht ($).

Wenn es dich interessiert gibt es genügend Ressourcen im Netz dazu. Sei noch angemerkt das ein PLZ Check je nach Einsatzgebiet umfangreicher aussehen sollte.

Gruß Danny

geschrieben von Herbert1204 am 11.12.2009 - 15:44
Hallo Danny
Vielen Dank für deine schnelle Antwort. Leider weiß ich nicht, wo ich die jeweiligen Sachen einfügen muß. Ich habe schon einiges ausprobiert, aber alles ohne Erfolg.
Kannst Du vielleicht das obenstehende Script vervollständigen?

Im Voraus schon einmal Vielen Dank

Herbert

geschrieben von Danny am 12.12.2009 - 11:52
Hallo Herbert,
dann poste uns deine Versuche. Sowas bringt in der Regel für einen selbst mehr. Es zu verstehen warum das nicht geht was man gemacht hat, anstatt die fertige Lösung dann einfach reinzukopieren ;)

Du hast doch eine Reihe von Abfragen in der Art und Weise:
z.B.
HTML-Quelltext
1: 
2: 
3: 
4: 
if (!check_empty(document.form.Passwort1.value)){ /* Funktion Namen (Abfrage) */
validity = false;
show('Layer1');show('Layer2'); /* zeige Fehler */
}


So baust du die anderen beiden mit auf z.B:

HTML-Quelltext
1: 
2: 
3: 
4: 
if (document.form.Passwort1.value != document.form.Passwort2.value){ /* Passwoerter sind nicht gleich */
validity = false;
show('Layer1');show('Layer2'); /* zeige Fehler */
}


und fügst die unter einen bestehenden solchen Block.

Für die PLZ ganz analog

HTML-Quelltext
1: 
2: 
3: 
4: 
5: 
var plz = document.form.Postleitzahl.value;
if (plz.search(/^([0-9]{5})$/) == -1){ /* PLZ ist falsch */
validity = false;
show('Layer1');show('Layer2'); /* zeige Fehler */
}


Gruß Danny

geschrieben von Herbert1204 am 12.12.2009 - 22:48
Hallo Danny
Vielen Dank für Deine schnell Hilfe.
Jetzt ist es genau so, wie ich es haben wollte.

Herbert


Powered by: JBB v.2.0.4 Copyright ©2000-2006, www.javarea.de.