e-mail prüfung
-
hallo
was stimmt den in meinem FOrmular nicht?
die E-Mail wird trotz richtiger Eingabe als falsch erklärt.<html><head><title>Test</title> <SCRIPT LANGUAGE="JavaScript1.1" TYPE="text/javascript"> <!-- Eingefügt am 29042005 Autor Metin Önal // Quelle: http://www.arstechnica.de/computer/JavaScript/JS11_08.html // Prüft, ob der Text für ein Feld zu lang ist function CheckInhaltEmail(Feld) { if (Feld == "") { alert ("Bitte erst Ihre Email-Adresse eintragen!"); document.Formular.eMail.focus(); return false; } } function IstZuLang(Feld, AnzZeichen) { var FehlerMeldung = "Fehler beim Ausfüllen des Formulars\n\n" var FeldLaenge = Feld.value.length var OK = FeldLaenge <= AnzZeichen if (!OK) { FehlerMeldung += "Dieses Feld darf max. " + AnzZeichen FehlerMeldung += " enthalten.\nSie haben " + FeldLaenge + " Zeichen eingegeben" alert(FehlerMeldung) Feld.focus() } return OK } //--- Prüft, ob nur Ziffern eingegeben wurden function NurZiffern(Feld) { PruefeZeichen(Feld, "0123456789", "Bitte prüfen Sie die Zahl") } //--- Prüft, ob nur Zeichen eingegeben wurden, //--- die für eine Telefonnummer üblich sind function NurTelefon(Feld) { PruefeZeichen(Feld, "0123456789 /-+()", "Bitte prüfen Sie die Telefonnummer") } //--- Prüft, ob eine eMail-Adresse korrekt aufgebaut ist function eMailAdresseOK(eMail) { // Erstellt von Ralf Pfeifer (www.arstechnica.de) // Falls das Feld leer ist, ohne Prüfung aussteigen if (eMail.value.length==0) { return true } // Text für die Fehlermeldung var FehlerMeldung = new String("Fehler in der eMail-Adresse\n\n") // Position des @ herausfinden var PosEt = eMail.value.indexOf("@") if (PosEt == -1) { alert(FehlerMeldung + "Es fehlt ein @") return eMail.focus() } if (PosEt == 0) { alert(FehlerMeldung + "Es fehlt der Empfänger") return eMail.focus() } if (eMail.value.indexOf("@", PosEt + 1) > PosEt) { alert(FehlerMeldung + "Es darf nur ein @ enthalten sein") return eMail.focus() } // Position des ersten . nach dem @ herausfinden var PosPt = eMail.value.indexOf(".", PosEt) if ((PosPt == -1) || (PosPt - PosEt < 2) || (eMail.value.length - PosPt < 3)) { FehlerMeldung += "Eine eMail-Adresse muß so aufgebaut sein: x@x.xx " FehlerMeldung += "Jedes x steht für mindestens ein Zeichen" alert(FehlerMeldung) return eMail.focus() } // Zulässige Zeichen für eMails definieren var ZugelasseneZeichen = new String("abcdefghijklmnopqrstuvwxyz") ZugelasseneZeichen += ZugelasseneZeichen.toUpperCase() + "0123456789.-_@" // eMail-Adresse auf zulässige Zeichen überprüfen return PruefeZeichen(eMail, ZugelasseneZeichen, FehlerMeldung) } //--- Unterprogramm, welches die Zeichen prüft function PruefeZeichen(Feld, ZugelasseneZeichen, FehlerMeldung) { // Erstellt von Ralf Pfeifer (www.arstechnica.de) for (var Pos = 0; Pos < Feld.value.length; Pos++) { if (ZugelasseneZeichen.indexOf(Feld.value.charAt(Pos)) == -1) { FehlerMeldung += "\n\nIhre Eingabe enthält das Zeichen '" FehlerMeldung += Feld.value.charAt(Pos) FehlerMeldung += "'. Sie dürfen nur diese Zeichen verwenden:\n" FehlerMeldung += ZugelasseneZeichen if (ZugelasseneZeichen.indexOf(" ") == -1) { FehlerMeldung += "\nLeerzeichen sind nicht erlaubt" } else { FehlerMeldung += "\nund das Leerzeichen" } alert(FehlerMeldung) Feld.focus() return } } } // --> </SCRIPT> <script language="JavaScript"> <!-- function FP_swapImg() {//v1.0 var doc=document,args=arguments,elm,n; doc.$imgSwaps=new Array(); for(n=2; n<args.length; n+=2) { elm=FP_getObjectByID(args[n]); if(elm) { doc.$imgSwaps[doc.$imgSwaps.length]=elm; elm.$src=elm.src; elm.src=args[n+1]; } } } function FP_preloadImgs() {//v1.0 var d=document,a=arguments; if(!d.FP_imgs) d.FP_imgs=new Array(); for(var i=0; i<a.length; i++) { d.FP_imgs[i]=new Image; d.FP_imgs[i].src=a[i]; } } function FP_getObjectByID(id,o) {//v1.0 var c,el,els,f,m,n; if(!o)o=document; if(o.getElementById) el=o.getElementById(id); else if(o.layers) c=o.layers; else if(o.all) el=o.all[id]; if(el) return el; if(o.id==id || o.name==id) return o; if(o.childNodes) c=o.childNodes; if(c) for(n=0; n<c.length; n++) { el=FP_getObjectByID(id,c[n]); if(el) return el; } f=o.forms; if(f) for(n=0; n<f.length; n++) { els=f[n].elements; for(m=0; m<els.length; m++){ el=FP_getObjectByID(id,els[n]); if(el) return el; } } return null; } // --> </script> </head><body> <form name="Testform" action=""> E-Mail<br> <input name="eMail" TYPE="text" VALUE="" size="34" ONBLUR=CheckInhaltEmail(this.value)> <input type="submit" value="Button1" onClick="eMailAdresseOK(this)" name="Bestellung"> <font face="Arial"> </font></form> </body></html>
-
Was heißt, sie wird als Falsch erklärt? Zu lang, falsche eingabe oder was?
Und ich würde das so in der Form NIEMALS einsetzen! Gerade nicht bei einer "Bestellung", wie ich es dem Formular entnehme. Was tust du, wenn der User sien JavaScript einfach deaktiviert? Dann wird das Formular gar nicht erst abgeschickt, der User wundert sich, warum... und geht und kommt nich wieder!
Oder aber jemand der auch nur ein bisschen Ahnung von solchen Sachen hat, editiert das JavaScript einfach raus, füllt das Formular aus und schickt es ab, und dein Serverseitiges Skript glaubt, die Daten währen korrekt.
Was ist so schlimm an ein paar kleines preg_match()-Funktionen in PHP einzubetten? Im Notfall reicht da ja schließlich sogar schon ein stristr()!
-
Hi
Wie kann ich den Courser in das Textfeld legen wenn die Seite geöffnet wird?
document.Formular.email_pruef.focus(); ...
Geht es damit ?
Wenn ja wo muss es stehen?PS: ???? Soll ich es lieber mit CGI versuche oder wie?
Erst mal den Code hier fertigstellen dann will ich wegen CGI nochmal fragen...<!-- http://www.pc-magazin.de/downloads/cm/javascript/script_prog.php?mod=bsp&id=20 --> <!-- http://www.pc-magazin.de/index.php --> <html> <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body bgcolor="#FFFFFF"> <script language="JavaScript1.2"> var ergebnis function pruefe_email() { var kette=document.pruef.email_pruef.value var filter=/^.+@.+..{2,3}$/ if (filter.test(kette)) ergebnis=true else{ alert("Bitte eine gültige E-Mail Adresse eingeben!") ergebnis=false } return (ergebnis) } </script> <script> function email(){ if (document.layers||document.all) return pruefe_email() else return true } </script> <form name="pruef" onSubmit="return email()"> E-Mail Adresse:<br> <input type="text" size=18 name="email_pruef"> <input type="submit" value="Submit"> </form> </body> </html>
-
Erst mal schreibt man Script-Tags i.d.R. in den Header-Bereich, dan lass bei JavaScript lieber dass 1.2 weg!
Den Coe zum Fokussieren des Formularfeldes fügst du in das body-Attribut onload ein.
Übrigens fehlt in deinem Code das DOCTYPE