function check_date(fld) { var date_parts = fld.value.split('-'); if(date_parts.length != 3) { return false; }else { if(date_parts[0].length == 1) { date_parts[0] = '0'+date_parts[1]; }else if(date_parts[0].length != 2) { return false; } if(date_parts[1].length == 1) { date_parts[1] = '0'+date_parts[1]; }else if(date_parts[1].length != 2) { return false; } if(date_parts[2].length == 2) { var tmpDate = new Date(); var year = tmpDate.getFullYear().toString(); year = year.substring(0,2); date_parts[2] = year + date_parts[2]; }else if(date_parts[2].length != 4) { return false; } fld.value = date_parts.join('-'); var objTempDate = new Date(date_parts[2],date_parts[1]-1,date_parts[0]); if(objTempDate.getFullYear() != date_parts[2] || objTempDate.getMonth() != date_parts[1]-1 || objTempDate.getDate() != date_parts[0] ) { return false; } } return true; } function check_date_in_future(fld) { if(check_date(fld)) { var date_parts = fld.value.split('-'); var objTempDate = new Date(date_parts[2],date_parts[1]-1,date_parts[0]); var objCurrDate = new Date(); if(objTempDate >= objCurrDate) { return true; }else { return false; } }else { return false; } } function check_date_in_past(fld) { if(check_date(fld)) { var date_parts = fld.value.split('-'); var objTempDate = new Date(date_parts[2],date_parts[1]-1,date_parts[0]); var objCurrDate = new Date(); if(objTempDate < objCurrDate) { return true; }else { return false; } }else { return false; } } function checkForm(frm, ruleset) { var reqErrors = new Array(); var valErrors = new Array(); var eersteError; // Velden controleren op vereist en valideer de velden. for(i = 0; i < frm.length; i++) { var veld = frm.elements[i]; var reqError = false; // Controleer of het veld vereist is. for(j = 0; j < ruleset.required.length; j++){ elemId = ruleset.required[j]; if(veld.name == elemId || veld.name == elemId+"[]") { // Controleren of veld ingevuld is. var regex = /^\s+$/; if(veld.value == null || veld.value == '' || regex.test(veld.value)){ reqErrors[reqErrors.length] = ruleset.reqerrors[elemId]; reqError = true; if(eersteError == null) { eersteError = veld; } } // Controleren of checkbox/radiobutton aangevinkt is. else if(veld.type == 'checkbox') { var checked = false; for(k=i; frm.elements[k].name == veld.name; k++) { if(frm.elements[k].checked) { checked = true; } } if(!checked) { reqErrors[reqErrors.length] = ruleset.reqerrors[elemId]; reqError = true; if(eersteError == null) { eersteError = veld; } } i = k-1; }else if(veld.type == 'radio') { var checked = false; for(k=i; frm.elements[k].name == veld.name; k++) { if(frm.elements[k].checked) { checked = true; } } if(!checked) { reqErrors[reqErrors.length] = ruleset.reqerrors[elemId]; reqError = true; if(eersteError == null) { eersteError = veld; } } i = k-1; } } } // Controleer of het veld gevalideerd moet worden. if(!reqError) { for(m = 0; m < ruleset.valfields.length; m++) { if(veld.name == ruleset.valfields[m]) { elemId = ruleset.valfields[m]; var err = false; if(ruleset.regex_checks[elemId] != null) { //Veld valideren met regex. var regex = new RegExp(ruleset.regex_checks[elemId]); var regexWSpace = /^\s+$/m; if(!regex.test(veld.value) && !regexWSpace.test(veld.value) && veld.value != '' && veld.value != null) { err = true; } }else if(ruleset.other_checks[elemId] != null) { var val = ruleset.other_checks[elemId]; switch(val) { case "date": if(!check_date(veld)) { err = true; } break; case "date_future": if(!check_date_in_future(veld)) { err = true; } break; case "date_past": if(!check_date_in_past(veld)) { err = true; } break; default: break; } } if(err) { valErrors[valErrors.length] = ruleset.valerrors[elemId]; if(eersteError == null) { eersteError = veld; } } } } } } // Opbouwen vereiste velden errors. var errorMsg; var veld; if(reqErrors.length == 1){ errorMsg = reqErrors[0]; } else if(reqErrors.length > 1) { for(n = 0; n < reqErrors.length; n++) { if(errorMsg != null) { errorMsg += "\n" + reqErrors[n]; }else { errorMsg = reqErrors[n]; } } } // Opbouwen validatie errors. if(valErrors.length == 1) { if(errorMsg != null) { errorMsg += "\n\n" + valErrors[0]; }else { errorMsg = valErrors[0]; } }else if(valErrors.length > 1) { if(errorMsg != null) { errorMsg += "\n"; } for(o = 0; o < valErrors.length; o++) { if(errorMsg != null) { errorMsg += "\n" + valErrors[o]; }else { errorMsg = valErrors[o]; } } } // Error weergeven aan gebruiker. if(errorMsg != null) { alert(errorMsg); eersteError.focus(); return false; // Er was een fout, niet submitten. }else { return true; // Submit het form. } // Oude errors uit formulier weghalen. // Error toevoegen aan veld.*/ }