/* checkform v1.2 ----------------- Script for validating formular inputs 2011 (c) By Christian Stankowic http://www.stankowic-development.net webmaster@stankowic-development.net */ //Globale Variablen var input_errorColor = "#ff9999"; var input_successColor = "#ffffff"; var blacklist_name = Array("Max Mustermann", "Don Huso"); var blacklist_mail = Array("@10minutemail.com", "@owlpic.com", "@bofthew.com", "@lhsdv.com", "@prtnx.com", "@pjjkp.com", "@nepwk.com", "@spaml.de", "@emailgo.de", "@jetable.org", "@guerrillamailblock.com", "@mailinator.com", "@chammy.info", "@thisisnotmyrealemail.com", "@zippymail.info", "@binkmail.com", "@suremail.info", "@PutThisInYourSpamDatabase.com", "@SpamHerePlease.com", "@SpamHereLots.com", "@SendSpamHere.com", "@chogmail.com", "@SpamThisPlease.com", "@frapmail.com", "@obobbo.com", "@devnullmail.com", "@tradermail.info", "@safetymail.info", "@bobmail.info", "@mailinator2.com", "@mailinator.net", "@kurzepost.de", "@objectmail.com", "@proxymail.eu", "@rcpt.at", "@trash-mail.at", "@trashmail.at", "@trashmail.me", "@trashmail.net", "@wegwerfmail.de", "@wegwerfmail.net", "@wegwerfmail.org", "@spambog.com", "@spambog.de", "@discardmail.com", "@discardmail.de", "@spambog.ru", "@cust.in", "@teewars.org", "@0815.ru", "@s0ny.net", "@hochsitze.com", "@hulapla.de", "@misterpinball.de", "@nomail2me.com", "anonbox.net", "@trash-mail.com", "@dontsendmespam.de", "@TempEMail.net", "@spamgourmet.com", "@tempalias.com", "@safetypost.de", "@nwldx.com", "@rppkn.com", "@rtrtr.com"); var blacklist_webp = Array("porn.", "hackmenot."); var blacklist_city = Array("Musterstadt", "Exampletown", "Beispiel", "bla", "test", "Test"); var errorMsg = "Sie haben vergessen alle benötigten Felder (korrekt) auszufüllen:"; var displayMsg = true; ; var displayList = true; ; var shakeForm = true; ; /*--------------------------------------------------*/ var errorFields = ""; var errorFlag = 0; var debugMode = false; function validate_field(formname, field_name, regexp) /* Feld validieren */ { //Debug-Ausgaben debugMsg("checking field " + field_name); debugMsg("Check: " + regexp + " on " + eval("document.forms." + formname + "." + field_name + ".name")); //Match der regulaere Ausdruck? if(regexp.test(eval("document.forms." + formname + "." + field_name + ".value")) == true) { //Debug debugMsg("Regexp matches on " + eval("document.forms." + formname + "." + field_name + ".name")); //Ja --> gleiche, falls gewuenscht, mit Blacklist ab if(validate_field.arguments.length == 4) { for(var i=0;i testing debugMsg(eval("document.forms." + formname + "." + field_name + ".value") + " in " + eval(validate_field.arguments[3])[i] + " = " + eval("document.forms." + formname + "." + field_name + ".value").indexOf(eval(validate_field.arguments[3])[i])); if(eval("document.forms." + formname + "." + field_name + ".value").indexOf(eval(validate_field.arguments[3])[i]) > -1) { //Ja, sie ist in der Blacklist vorhanden --> markiere als "fehlerhaft" und breche ab setInvalid(formname, field_name); errorFlag = 1; errorFields = errorFields + " " + "\n" + eval("document.forms." + formname + "." + feld[i] + ".name").substring(5, eval("document.forms." + formname + "." + feld[i] + ".name").length); return false; //break; } } //Markiere als "korrekt" setValid(formname, field_name); return true; } else { //Markiere als "korrekt" setValid(formname, field_name); return true; } } else { //Nein --> markiere als "fehlerhaft" debugMsg("Regexp DONT MATCH on " + eval("document.forms." + formname + "." + field_name + ".name")); setInvalid(formname, field_name); errorFlag = 1; errorFields = errorFields + " " + "\n" + eval("document.forms." + formname + "." + field_name + ".name").substring(5, eval("document.forms." + formname + "." + field_name + ".name").length); } } function convertHTMLTags(message_text) //Sonderzeichen durch HTML-Tags ersetzen { //Arrays definieren var umlauts = Array("ö", "Ö", "ü", "Ü", "ä", "Ä", "ß"); var htmlentities = Array("ö", "Ö", "ü", "Ü", "ä", "Ä", "ß"); //Einzelne Buchstaben ersetzen for(var i=0; i testing debugMsg(umlauts[i] + " --> " + htmlentities[i]); //Zeichen im Text ersetzen message_text = message_text.replace(umlauts[i], htmlentities[i]); } //Text wieder uebergeben return message_text; } function errorMessage(title, fields) /* Fehlermeldung ausgeben */ { //Umbrueche ersetzen und Text ausgeben var message = ""; if(displayList == true) { //Als Liste anzeigen var temp = fields.split("\n"); for(var i=1;i" + temp[i] + ""; } message = title + "
    " + message + "
"; eval("document.getElementById('error').innerHTML=\"" + convertHTMLTags(message) + "\";"); //eval("document.getElementById('error').innerHTML=\"" + message + "\";"); } else { //Als Text anzeigen fields = fields.replace(/\r\n|\n/g, "
"); message = title + fields; eval("document.getElementById('error').innerHTML=\"" + convertHTMLTags(message) + "\";"); //eval("document.getElementById('error').innerHTML=\"" + message + "\";"); } } function setInvalid(formname, field) /* Ein Eingabefeld als fehlerhaft markieren */ { debugMsg("Marking " + eval("document.forms." + formname + ".elements." + field + ".name") + " as invalid."); eval("document.forms." + formname + ".elements." + field + ".style.backgroundColor='" + input_errorColor + "'"); } function setValid(formname, field) /* Ein Eingabefeld als korrekt markieren */ { debugMsg("Marking " + eval("document.forms." + formname + ".elements." + field + ".name") + " as valid."); eval("document.forms." + formname + ".elements." + field + ".style.backgroundColor='" + input_successColor + "'"); } function debugMsg(msg) /* Debug-Nachricht ausgeben, wenn erwuenscht */ { if(debugMode == true) { alert(msg); } } function checkElements(formname) /* Die Elemente eines Formulars auf Inhalt ueberpruefen */ { //Ausgabe des zu ueberpruefenden Formulars und der Anzahl der Felder --> testing //debugMsg("Formular " + formname + " ist zu ueberpruefen, es gibt " + (arguments.length-1) + " zu ueberpruefende Felder."); //Speichern der Parameter in einem Array feld = new Array(); errorFields = ""; errorFlag = 0; for(var i=0;i testing var debug_fields = "About to check the following " + feld.length + " fields:\n"; for(var i=0;i testing //alert ("Inhalt des Feldes " + feld[i] + ": " + eval("document.forms." + formname + "." + feld[i] + ".value")); //Wurde das Feld ausgefuellt? switch(eval("document.forms." + formname + "." + feld[i] + ".name").substring(0,5)) { case "text_": validate_field(formname, feld[i], /^[^\d][\D]{2,}$/); break; case "webp_": validate_field(formname, feld[i], /^http:\/\/[\D]{2,}\.[\D]{2,4}$/, blacklist_webp); break; case "mail_": validate_field(formname, feld[i], /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/, blacklist_mail); break; case "post_": validate_field(formname, feld[i], /[0-9]{5}/); break; case "tele_": validate_field(formname, feld[i], /^[0\+]{1}[\d]{2,}[\/\-]?[\d]+[\-]?[\d]+$/); break; case "name_": validate_field(formname, feld[i], /^[^\d][\D]{2,} [^\d][\D]{2,}$/, blacklist_name); break; case "hage_": validate_field(formname, feld[i], /^[1-9]{1}[0-9]{0,2}$/); break; case "city_": validate_field(formname, feld[i], /^[^0-9][\D]{4,}$/, blacklist_city); break; case "numb_": validate_field(formname, feld[i], /^[0-9]{1,}$/); break; //case "text_": //validate_field(formname, feld[i], /^[^\d][\D]{3,}$/); //break; //Webseite //case "webp_": //validate_field(formname, feld[i], /^http:\/\/[\D]{2,}\.[\D]{2,4}$/, blacklist_web); //break; //Checkbox case "chec_": if(eval("document.forms." + formname + "." + feld[i] + ".checked") == false) { errorFlag = 1; errorFields = errorFields + " " + "\n" + eval("document.forms." + formname + "." + feld[i] + ".name").substring(5, eval("document.forms." + formname + "." + feld[i] + ".name").length); } break; //Unbekanntes Feld default: if(eval("document.forms." + formname + "." + feld[i] + ".value") == "") { //Das Feld wurde nicht ausgefuellt --> setze das Flag und erweitere Liste mit vergessenen Feldern errorFlag = 1; errorFields = errorFields + " " + "\n" + eval("document.forms." + formname + "." + feld[i] + ".name"); //Aendern der Hintergrundfarbe des Eingabefelds setInvalid(formname, feld[i]); } else { //Feld korrekt ausgefuellt, faerbe Feld (wieder) korrekt ein setValid(formname, feld[i]); } break; } } //Sind Fehler aufgetreten? if (errorFlag == 1) { //Es sind Fehler aufgetreten, gebe Fehlermeldung aus und wackele mit der Form, falls gewuenscht if(displayMsg == true) {errorMessage(errorMsg, errorFields); } if(shakeForm == true) { eval("new Effect.Shake('" + formname + "', {distance:20});") } } else { //Es wurden alle Felder ausgefuellt --> sende Daten an das Formular eval("document.forms."+ formname+ ".submit()"); } }