/*********************************************************************/ /* Title: Generic HTML Form Validator */ /* */ /* Original Idea : Emre Sevinç(*), emres at bilgi edu tr */ /* Initial Implementation: Ferhat Can(*), ferhatc at bilgi edu tr */ /* Final Code : Emre Sevinç */ /* Testing & Coding Ideas: Serkan Güzeller, natilius at bilgi edu tr */ /* Mozilla Compatibility : Hüseyin Aslıtürk, asliturk at yahoo com */ /* */ /* This code is released under GPL licence */ /* see http://www.gnu.org/copyleft/gpl.html for details */ /* July, 2003 */ /* */ /* BUGS: */ /* -Currently works on MS Internet Explorer and Mozilla only ;-) */ /* */ /* TO-DO: */ /* - Add some more utility "RegEx"es */ /* */ /* NOTES: */ /* Thanks to http://fazlamesai.net community for peer */ /* code reviews and technical support. */ /* */ /* */ /* See GenericValidator.html included with distribution */ /* which has a demo showing the example usage of functionality */ /* */ /* (*): Istanbul Bilgi University (http://www.bilgi.edu.tr) */ /* eMBA Software Development Team */ /*********************************************************************/ function validate(targetForm) { var EMAIL = "^[a-zA-Z0-9_-]+(\.([a-zA-Z0-9_-])+)*@[a-zA-Z0-9_-]+[.][a-zA-Z0-9_-]+([.][a-zA-Z0-9_-]+)*$" var URL = "http://" for (var i = 0; i < targetForm.elements.length; i++) { if(targetForm.elements[i].getAttribute("strValue") != null) { var message = targetForm.elements[i].getAttribute("message"); var strBound = targetForm.elements[i].getAttribute("strBound"); var strVal = targetForm.elements[i].getAttribute("strValue"); if(eval('document.' + strBound + '.type') == 'select-one') { var sIndex = eval('document.' + strBound + '.selectedIndex'); var strBoundVal = eval('document.' + strBound + '[' + sIndex + '].value'); } if(strVal == strBoundVal){ if(targetForm.elements[i].value == '') { alert(message); targetForm.elements[i].focus(); return false; } } } if(targetForm.elements[i].getAttribute("isReq")) { var message = targetForm.elements[i].getAttribute("message"); if(targetForm.elements[i].type == 'checkbox') { if(!targetForm.elements[i].checked) { alert(message); targetForm.elements[i].focus(); return false; } } else if(targetForm.elements[i].type == 'text' || targetForm.elements[i].type == 'password') { if(targetForm.elements[i].value == '') { alert(message); targetForm.elements[i].focus(); return false; } if(targetForm.elements[i].getAttribute("regex") != null) { var UserRegEx = targetForm.elements[i].getAttribute("regex"); var InputValue = targetForm.elements[i].value; if(UserRegEx == 'EMAIL') { var re = new RegExp(EMAIL); if(!InputValue.match(re)) { alert(message); targetForm.elements[i].focus(); return false; } } else if(UserRegEx == 'URL') { var re = new RegExp(URL); if(!InputValue.match(re)) { alert(message); targetForm.elements[i].focus(); return false; } } else { var re = new RegExp(UserRegEx); if(!InputValue.match(re)) { alert(message); targetForm.elements[i].focus(); return false; } } } } else if(targetForm.elements[i].type == 'select-one') { if(targetForm.elements[i].value == '') { alert(message); targetForm.elements[i].focus(); return false; } } else if(targetForm.elements[i].type == 'textarea') { if(targetForm.elements[i].value == '') { alert(message); targetForm.elements[i].focus(); return false; } } else if(targetForm.elements[i].type == 'radio') { var isSelected = false; var j = 0; while(targetForm.elements[i+j].type == 'radio' && targetForm.elements[i].name == targetForm.elements[i+j].name) { if(targetForm.elements[i+j].checked) { isSelected = true; } j++; } j = 0; while(targetForm.elements[i-j].type == 'radio' && targetForm.elements[i].name == targetForm.elements[i-j].name) { if(targetForm.elements[i-j].checked) { isSelected = true; } if(i-j <= 0) { break; } j++; } if(!isSelected) { alert(message); targetForm.elements[i].focus(); return false; } } else { return true; } } } }