以下是代码: //js_auto_check Create by Wayne Deng http://www.waynedeng.com/blog var errmsg=''; function pub_valuecheck(obj){ errmsg=''; prv_validcheck(obj.children); if(errmsg.length>1) alert(errmsg); return errmsg.length<=1&&Checkform();; }
function prv_validcheck(obj){ var message=''; for (var i=0;i<obj.length;i++){ if(obj[i].style.display=='none') continue;
var value=''; if(obj[i].tagName=='INPUT'||obj[i].tagName=='SELECT'||obj[i].tagName=='CHECKBOX'||obj[i].tagName=='RADIO') value=obj[i].value; if(obj[i].tagName=='TEXTAREA') value=obj[i].innerHTML;
message=''; if (obj[i].message!=undefined) message=obj[i].message;
if (obj[i].required!=undefined&&obj[i].required=='true'&&value.length==0){ addmsg(obj[i].caption + ' is required!/n'); } if (obj[i].datatype!=undefined&&value.length>0){ if (obj[i].datatype=='number'){ if(!(/^/d+$/.test(value))) addmsg (obj[i].caption + ' should be a number!/n'); } if (obj[i].datatype=='date'&&!pub_isDateTime(value)){ addmsg (obj[i].caption + ' should be a date (dd/mm/yyyy)!/n'); } }
if (obj[i].maxlength!=undefined&&value.length>obj[i].maxlength){ addmsg(obj[i].caption + ' is to long (' + obj[i].maxlength + ' max)!/n'); } if (obj[i].RE!=undefined&&value.length>0){ re = new RegExp(obj[i].RE); if(!re.test(value)) addmsg (obj[i].caption + ' format error!/n'); } prv_validcheck(obj[i].children); }
function addmsg(msg){ if (message=='') errmsg=errmsg +msg; else errmsg=errmsg+message+'/n'; } }
function pub_isDateTime(chkValue){ var rn = chkValue.match(/(/d{2})//(/d{2})//(/d{4})/); if (rn==null) return false; var d = new Date(rn[3], rn[2]-1, rn[1]); return (d.getFullYear()==rn[3]&&(d.getMonth()+1)==rn[2]&&d.getDate()==rn[1]); }