// // FIELD VALIDATION CODE version 2.3 // courtesy www.richarddiamond.com function genericFormValidate (theForm) { var i, sname, aname, errMessage, validationType, field, title, field2, title2, re, fieldToValidate; errMessage = ""; for (var i=0;i <= theForm.elements.length;i++) { if (theForm.elements[i] && theForm.elements[i].name) { sname = theForm.elements[i].name; if ((sname.indexOf ("_validate_") != -1) && !(theForm.elements[i].disabled)) { field = sname.substring(0,sname.indexOf ("_validate_")); validationType = sname.substr(sname.indexOf ("_validate_")+10); fieldToValidate = theForm.elements[field]; // use for singletons--not selects, radios, etc. fieldToValidate2 = theForm.elements[field]; // for selects, radios, etc. if (theForm.elements[field].length && (theForm.elements[field].length > 1)) { for (var j = 0; j < theForm.elements[field].length; j++) { if (!theForm.elements[field][j].disabled) { fieldToValidate = theForm.elements[field][j]; } } } var tagstofind = String("|select|radio|"); if (theForm.elements[field].length && (theForm.elements[field].length > 1) && (theForm.elements[field][0].tagName) && (tagstofind.indexOf(theForm.elements[field][0].tagName.toLowerCase()) > 0) ) { for (var j = 0; j < theForm.elements[field].length; j++) { if (!theForm.elements[field][j].disabled) { fieldToValidate2 = theForm.elements[field][j]; } } } if (fieldToValidate.title) { title = fieldToValidate.title; } else { title = field; } switch (validationType) { case "required" : if (fieldToValidate.value == "") { errMessage += title + " is a required field\n"; }; break; case "equalsfield" : field2 = theForm.elements[i].value; if (theForm.elements[field2].title) { title2 = theForm.elements[field2].title; } else { title2 = theForm.elements[field2].name; } if (fieldToValidate.value != theForm.elements[field2].value) { errMessage += title + " must match " + title2 + "\n"; } break; case "equals" : if (theForm.elements[i].title) { title2 = theForm.elements[i].title; } else { title2 = title + " must be '" + theForm.elements[i].value + "'"; } if (fieldToValidate.value != theForm.elements[i].value) { errMessage += title2 + "\n"; } break; case "notequal" : if (theForm.elements[i].title) { title2 = theForm.elements[i].title; } else { title2 = title + " cannot be '" + theForm.elements[i].value + "'"; } if (fieldToValidate.value == theForm.elements[i].value) { errMessage += title2 + "\n"; } break; case "regexp" : re = new RegExp(theForm.elements[i].value); if (theForm.elements[i].title) { title2 = theForm.elements[i].title; } else { title2 = "is not a valid entry"; } if (fieldToValidate.value && !fieldToValidate.value.match(re)) { errMessage += title + " " + title2 +"\n"; } break; case "notregexp" : re = new RegExp(theForm.elements[i].value); if (theForm.elements[i].title) { title2 = theForm.elements[i].title; } else { title2 = "is not a valid entry"; } if (fieldToValidate.value && fieldToValidate.value.match(re)) { errMessage += title + " " + title2 +"\n"; } break; case "date" : /* the only problem with doing it this way is that JavaScript automatically corrects dates that don't make sense to ASP (like 22/22/2000) so, maybe you're better off using a reg-exp */ if (fieldToValidate.value && Date.parse(fieldToValidate.value) != Date.parse(fieldToValidate.value)) { errMessage += title + " is not a valid date\n"; } // var newDate = new Date(Date.parse(theForm.elements[field].value)); // alert (newDate); break; case "radiorequired" : found = false; for (counter = 0; counter < fieldToValidate2.length; counter++) { if (fieldToValidate2[counter].checked) found = true; } if (!found) { errMessage += theForm.elements[i].value + "\n"; } break; case "selected" : var isSelected = false if (fieldToValidate2.multiple) { var theoptions = fieldToValidate2.options; for (var z=0; z thecount) || ((maxcount >= 0) && (thecount > maxcount))) { errMessage += title + " " + title2 + "\n"; } break; default : ; } } } } if (errMessage.length > 0) { alert (errMessage); return false; } else { return true; } }