/*form_pruefen.js
* by Thorsten Ruppenstein. v2.1
* 02.03.2005 Fehler bei "nid" und "aid" beseitigt (Überprüfung auf NULL reichte nicht aus)
* Erweiterung um Zeitfeld hh:mm
* 08.06.2005 Fehler bei parseInt(x) behoben (führende Null); jetzt: parseInt(x, 10)
* 27.09.2005 Erweiterung um oid's ("Optionsfelder")
* 05.10.2005 Erweiterung um Parameter init_ok, init_fehlertext ("Einbindung" vorgeschalteter Prüfungen);
* vgl. Travelprotect.de
* 10.10.2005 Erweiterung: Es werden nur Felder geprüft, die auch sichtbar sind.
* 28.02.2007 Erweiterung um pid 64 Prüfen auf E-Mail-Adresse
*
* !!! Spezielle Anpassung (Datum: String "TT.MM.JJJJ" wird als leer interpretiert)
*
* 17.08.2006 Fehler: bspw. !flag_sid[el_sid], Lösung verwende "1" als init-Wert und "2" als Flag
*
*/
//Rückgabe: TRUE oder FALSE
function pruefen(form, init_ok, init_fehlertext){
ok = true;
fehlertext = "FEHLER BEI DER EINGABE\n\nFolgende Fehler sind aufgetreten:\n";
if (!init_ok) {
if (init_fehlertext) {
fehlertext += init_fehlertext;
ok = false;
}
}
//Felder prüfen
/* pid's (kombinierbar, z.Bsp. : 1+2=3)
* 1 Feld UNTER KEINEN UMSTÄNDEN LEER
* 2 Feld positive ganze Zahl (>=0)
* 4 Feld muss Datumsformat TT.MM.JJJJ haben oder leer
* 8 checkbox: mindestens eins ausgewählt
* 16 select: mindestens eins ausgewählt
* 32 Feld muss Uhrzeit sein HH[:|.]MM oder leer
* 64 Feld muss E-Mail-Adresse sein w.+[@]w.+[.]w.+ oder leer
* 128 Format Telefon nach CH-Format
* 256 Format PID
* 512 Format PIN
* 1024 Format Reg./KD-Nr.
* 2048 Feld UNTER KEINEN Zahlen enthalten
*/
/* aid's
* bei gleichem Wert muss mindestens eins grösser 0 sein (verwenden mit pid=2)
*/
/* oid's
* wie aid's, jedoch speziell für Radiobuttons (Optionsfelder)
/* sid's
* bei gleichem Wert müssen die betreffenden Felder auch den gleichen Inhalt haben
*/
/* nid's
* bei gleichem Wert dürfen nicht alle betreffenden leer sein
*/
flag_nid = new Array();
flag_message_nid = new Array();
flag_aid = new Array();
flag_message_aid = new Array();
flag_oid = new Array();
flag_message_oid = new Array();
flag_sid = new Array();
flag_value_sid = new Array();
flag_message_sid = new Array();
for (i=0; i
0) {
if (flag_oid[el_oid]==null || !flag_oid[el_oid]) {
flag_oid[el_oid] = 1;
flag_message_oid[el_oid] = el_message;
}
if (getOptionValue(form[el.name])>0) {
flag_oid[el_oid] = 2;
}
}
if (el_aid>0) {
if (flag_aid[el_aid]==null || !flag_aid[el_aid]) {
flag_aid[el_aid] = 1;
flag_message_aid[el_aid] = el_message;
}
if (el.value>0) {
flag_aid[el_aid] = 2;
}
}
if (el_sid>0) {
if (flag_sid[el_sid]==null || !flag_sid[el_sid]) {
flag_sid[el_sid] = 1;
flag_message_sid[el_sid] = el_message;
flag_value_sid[el_sid] = el.value;
}
if (el.value!=flag_value_sid[el_sid]) {
flag_sid[el_sid] = 2;
}
}
if (el_nid>0) {
if (flag_nid[el_nid]==null || !flag_nid[el_nid]) {
flag_nid[el_nid] = 1;
flag_message_nid[el_nid] = el_message;
}
if (el.value!=""){
flag_nid[el_nid] = 2;
}
}
if (el_pid & 1) {
if (el.value=="" || el.value == "TT.MM.JJJJ") {
ok = false;
fehlertext += "- Das Feld " + el_message + " darf nicht leer sein.\n";
}
}
if (el_pid & 2) {
if(parseInt(el.value, 10)!=el.value || parseInt(el.value, 10)<0) {
ok = false;
fehlertext += "- Das Feld " + el_message + " darf nur aus Ziffern (0-9) bestehen.\n";
}
}
if (el_pid & 32) {
if (el.value.length>0) {
var AusdruckNum = /^(\d{1,2})$/
if (AusdruckNum.test(el.value)==true) {
var ErgebnisNum = AusdruckNum.exec(el.value);
var stundeNum = parseInt(RegExp.$1, 10);
var stunde_okNum = true;
if (stundeNum<0 || stundeNum>24) stunde_okNum = false;
if (stunde_okNum) {
//ersetze 24 durch 00
if (stundeNum==24) {
stundeNum=0;
}
//bringe die Eingabe auf das passende Format (Mit Nullen auffüllen)
str_hNum = "" + stundeNum;
str_mNum = "0";
if(str_hNum.length<2) str_hNum = "0" + str_hNum;
if(str_mNum.length<2) str_mNum = "0" + str_mNum;
el.value = str_hNum + ":" + str_mNum;
}
else {
ok = false;
fehlertext += "- Das Feld " + el_message + " muss im Format HH:MM sein.";
if (!stunde_okNum) fehlertext += "(Fehler bei Stunde)";
fehlertext += "\n";
}
}
var Ausdruck = /^(\d{1,2})[:|.](\d{1,2})$/
if (Ausdruck.test(el.value)==false) {
ok = false;
fehlertext += "- Das Feld " + el_message + " muss im Format HH:MM sein.\n";
}
else {
var Ergebnis = Ausdruck.exec(el.value);
var stunde = parseInt(RegExp.$1, 10)
var minute = parseInt(RegExp.$2, 10)
var stunde_ok = true;
var minute_ok = true;
if (stunde<0 || stunde>24) stunde_ok = false;
if (minute<0 || minute>59) minute_ok = false;
if (stunde_ok && minute_ok) {
//ersetze 24 durch 00
if (stunde==24) {
stunde=0;
}
//bringe die Eingabe auf das passende Format (Mit Nullen auffüllen)
str_h = "" + stunde;
str_m = "" + minute;
if(str_h.length<2) str_h = "0" + str_h;
if(str_m.length<2) str_m = "0" + str_m;
el.value = str_h + ":" + str_m;
}
else {
ok = false;
fehlertext += "- Das Feld " + el_message + " muss im Format HH:MM sein.";
if (!minute_ok && stunde_ok) fehlertext += "(Fehler bei Minute)";
if (!minute_ok && !stunde_ok) fehlertext += "(Fehler bei Stunde und Minute)";
if (minute_ok && !stunde_ok) fehlertext += "(Fehler bei Stunde)";
fehlertext += "\n";
}
}
}
}
if (el_pid & 64) {
if (el.value.length>0) {
var strReg = "^([a-zA-Z0-9_\.\-])+\@([a-zA-Z0-9\-\.])+\.([a-zA-Z0-9]{2,4})+$";
var regex = new RegExp(strReg);
if (regex.test(el.value)==false) {
ok = false;
fehlertext += "- Das Feld " + el_message + " muss im Format myname@provider.com sein.\n";
}
}
}
if (el_pid & 128) {
if (el.value.length>0) {
var strReg = /^([\+]{1})(\d{2}) (\d{2}) (\d{3}) (\d{2}) (\d{2})$/;
var regex = new RegExp(strReg);
if (regex.test(el.value)==false) {
ok = false;
fehlertext += "- Das Feld " + el_message + " muss im Format +41 XX XXX XX XX sein.\n";
}
}
}
if (el_pid & 256) {
if (el.value.length>0) {
var strReg = /^(\w{2})-(\d{4})-(\w{4})$/;
var regex = new RegExp(strReg);
if (regex.test(el.value)==false) {
ok = false;
fehlertext += "- Das Feld " + el_message + " muss im Format XX-0000-XXXX sein.\n";
}
}
}
if (el_pid & 512) {
if (el.value.length>0) {
var strReg = /^(\d{2})\.(\d{3})\.(\d{3})\.(\d{3})$/;
var regex = new RegExp(strReg);
if (regex.test(el.value)==false) {
ok = false;
fehlertext += "- Das Feld " + el_message + " muss im Format 00.000.000.000 sein.\n";
}
}
}
if (el_pid & 1024) {
if (el.value.length>0) {
var strReg = /^(\d{4})\.(\d{3})\.(\d{3})$/;
var regex = new RegExp(strReg);
if (regex.test(el.value)==false) {
ok = false;
fehlertext += "- Das Feld " + el_message + " muss im Format 0000.000.000 sein.\n";
}
}
}
if (el_pid & 2048) {
if (el.value.length>0) {
var strReg = /^([\D]*)([\d]+)$/;
var regex = new RegExp(strReg);
if (regex.test(el.value)!=false) {
ok = false;
fehlertext += "- Das Feld " + el_message + " darf keine Zahl enthalten.\n";
}
}
}
if (el_pid & 4) {
if (el.value.length>0 && el.value != "TT.MM.JJJJ") {
var Ausdruck = /^(\d{1,2})\.(\d{1,2})\.(\d{4})$/
if (Ausdruck.test(el.value)==false) {
ok = false;
fehlertext += "- Das Feld " + el_message + " muss im Format TT.MM.JJJJ sein.\n";
}
else {
var Ergebnis = Ausdruck.exec(el.value);
var tag = parseInt(RegExp.$1, 10);
var monat = parseInt(RegExp.$2, 10);
//alert("Monat: " + monat + " Tag: " + tag + " 0: " + RegExp.$1);
switch(monat) {
// 31 Tage
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if ((tag<1) || (tag>31)) {
ok = false;
fehlertext += "- Das Feld " + el_message + " muss im Format TT.MM.JJJJ sein. (Tag ung\u00fcltig)\n" + tag + "\n";
}
break;
// 30 Tage
case 4:
case 6:
case 9:
case 11:
if ((tag<1) || (tag>30)) {
ok = false;
fehlertext += "- Das Feld " + el_message + " muss im Format TT.MM.JJJJ sein. (Tag ung\u00fcltig: " + tag + ")\n";
}
break;
//Februar maximal 29
case 2:
if ((tag<1) || (tag>29)) {
ok = false;
fehlertext += "- Das Feld " + el_message + " muss im Format TT.MM.JJJJ sein. (Tag ung\u00fcltig)\n" + tag + "\n";
}
break;
default:
ok = false;
fehlertext += "- Das Feld " + el_message + " muss im Format TT.MM.JJJJ sein. (Monat ung\u00fcltig)\n" + monat + "\n";
break;
}
}
}
}
if (el_pid & 8) {
if (form[el.name].length>0) {
zaehler = 0;
for (k = 0 ; k < form[el.name].length; k++){
if (form[el.name][k].checked) zaehler = zaehler + 1;
}
if(zaehler==0) {
ok = false;
fehlertext += "- Bei " + el_message + " muss mindestens eine Alternative gew\u00e4hlt sein.\n";
}
}
else {
if (!(form[el.name].checked)) {
ok = false;
fehlertext += "- Das Feld " + el_message + " muss angeklickt sein.\n";
}
}
}
if (el_pid & 16) {
if (el.selectedIndex==0){
ok = false;
fehlertext += "- Bitte w\u00e4hle deine gew\u00FCnschte Kategorie aus.\n";
}
}
} // ist_sichtbar?
}//ENDE FOR
for (l=0; l bei Grossvater weitermachen
default:
return ist_sichtbar(el.parentNode);
break;
}
}
else {
return ist_sichtbar(el.parentNode);
}
}
//keine Eltern mehr
else return true;
}