JS源码如下:
var
validrule?????????????????
= new Object();
validrule.LetterStr???????????
=
/^([a-zA-Z]+)?$/;????
validrule.NumAndStr???????????
= /^([0-9a-zA-Z]+)?$/;
validrule.NumStr??????????????
= /^(\d*)?$/;?
validrule.string??????????????
= /^([^'<>]+)?$/;
validrule.int?????????????????
= /^(\d{1,9})?$/;
validrule.minusint????????????
= /^(\-([1-9])(\d*))?$/;
validrule.float???????????????
=
/^((\.([0-9]\d*))|(([0-9]\d*)\.\d+$)|([0-9]\d*))?$/;???????????????????
validrule.date????????????????
=
/^((([1-9]\d{3})|([1-9]\d{1}))-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\d|3[0-1]))?$/;?
validrule.time????????????????
= /^((0[1-9]|1[0-9]|2[0-4]):([0-5][0-9]):([0-5][0-9]))?$/;
validrule.datetime????????????
=
/^((([1-9]\d{3})|([1-9]\d{1}))-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\d|3[0-1])
(0[1-9]|1[0-9]|2[0-4]):([0-5][0-9]):([0-5][0-9]))?$/;??
validrule.year????????????????
= /^(\d{4})?$/;
validrule.month???????????????
= /^([1-9]|0[1-9]|1[0-2])?$/;
validrule.day?????????????????
= /^([1-9]|0[1-9]|1[0-9]|2[0-9]|3[0-1])?$/;
validrule.postcode????????????
=
/^(\d{6})?$/;??????????
validrule.email???????????????
= /^(.+\@.+\..+)?$/;??
validrule.phone???????????????
=
/^(\(\d{3}\))?(\(?(\d{3}|\d{4}|\d{5})\)?(-?)(\d+))?((-?)(\d+))?$/;
validrule.mobiletel???????????
= /^(013(\d{9})|13(\d{9}))?$/;
validrule.ip??????????????????
=
/^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5]))?$/;?
validrule.idcard??????????????
= /^(\d{15}|\d{18}|\d{17}X|\d{17}x)?$/;
validrule.tabledefine?????????
= /^(([A-Za-z])([A-Za-z0-9|_]){1,18})?$/;
validrule.integer?????????????
= /^(\d{1,9})?$/;
validrule.number??????????????
= /^(\d*)?$/;
validrule.url?????????????????
= /^(http:\/\/)/;
validrule.chinese?????????????
= /^[\u4E00-\u9FA5]*$/;
validrule.notsstring??????????
= /^([^'<>\s]+)?$/;
validrule.persent?????????????
= /^(?:100|[1-9]\d?)?$/;
validrule.fpersent????????????
=/^(?:100|[1-9]\d?)(?:\.00)?$/;
validrule.tint?????????????
= /^(?:|[1-9]\d?)(?:|[1-9]\d?)(?:|[1-9]\d?)?$/;
?
function doValidate( vform )
{
?var elems = vform.elements;
?var frmLen = elems.length;
?var thePat = "";
?var strFormatInfo = "";
?//对于每一个FROM元素
?for(var i=0;i<frmLen;i++)
?{
??var _elem = elems[i];
??//为空检查???????????????
??if((_elem.notNull != null
&& _elem.notNull == "true") ||
(_elem.notnull != null &&
_elem.notnull == "true"))
??{
???if(_elem.value.length
== 0)
???{
????alert(_elem.vdisp+"不能为空!")
????_elem.focus();
????return
false;
???}
??}??
???????????????
//类型检查?????????????????
??if(_elem.vtype == null)
??{
???continue;
??}
??????
?if(_elem.vtype=="none")
??????
?{????????
??????
??? thePat =
"";
??????
???
strFormatInfo = "";
??????
?}
??????
?if(_elem.vtype=="LetterStr")
??????
?{??????
??????
??? thePat =
validrule.LetterStr;
??????
???
strFormatInfo = "纯字母字符串";
??????
?}
??????
?if(_elem.vtype=="NumAndStr")
??????
?{??????
??????
??? thePat =
validrule.NumAndStr;
??????
???
strFormatInfo = "数字和字母字符串";
??????
?}
??????
?if(_elem.vtype=="NumStr")
??????
?{??????
??????
??? thePat =
validrule.NumStr;
??????
???
strFormatInfo = "纯数字组成的字符串";
??????
?}
??????
?if(_elem.vtype=="string")
??????
?{??????
??????
??? thePat =
validrule.string;
??????
???
strFormatInfo = "不含特殊符号的字符串";
??????
?}
??????
?if(_elem.vtype=="int")????????
??????
?{??????
??????
??? thePat =
validrule.int;
??????
???
strFormatInfo = "整数";
??????
?}
??????
?if(_elem.vtype=="minusint")????????
??????
?{??????
??????
??? thePat =
validrule.minusint;
??????
???
strFormatInfo = "负整数,比如-123";
??????
?}
??????
?if(_elem.vtype=="float")????????
??????
?{??????
??????
??? thePat =
validrule.float;
??????
???
strFormatInfo = "实数,比如356.32";
??????
?}
??????
?if(_elem.vtype=="date")????????
???????????????
{??????
??????
??? thePat =
validrule.date;
??????
???
strFormatInfo = "日期型,比如 2004-08-12";
??????
?}
??????
?if(_elem.vtype=="time")????????
??????
?{??????
??????
??? thePat =
validrule.time;
??????
???
strFormatInfo = "时间型,比如08:37:29";
??????
?}??????
?
??????
?if(_elem.vtype=="datetime")????????
??????
?{??????
??????
??? thePat =
validrule.datetime;
??????
???
strFormatInfo = "日期时间型,比如2004-08-12 08:37:29";
??????
?}
???????????????
if(_elem.vtype=="year")????????
??????
?{??????
??????
??? thePat =
validrule.year;
??????
???
strFormatInfo = "年代格式,比如 2005";
??????
?}
??????
?if(_elem.vtype=="month")????????
??????
?{??????
??????
??? thePat =
validrule.month;
??????
???
strFormatInfo = "月份格式,比如 08";
??????
?}
???????????????
if(_elem.vtype=="day")????????
??????
?{??????
??????
??? thePat =
validrule.day;
??????
???
strFormatInfo = "日子格式,比如 14";
??????
?}
??????
?if(_elem.vtype=="postcode")????????
??????
?{??????
??????
??? thePat =
validrule.postcode;
??????
???
strFormatInfo = "邮编,比如 100001";
??????
?}??????
?
??????
?if(_elem.vtype=="email")????????
??????
?{??????
??????
??? thePat =
validrule.email;
??????
???
strFormatInfo = "电子邮件格式,比如 msm@hotmail.com
";
??????
?}
??????
?if(_elem.vtype=="phone")????????
??????
?{??????
??????
??? thePat =
validrule.phone;
??????
???
strFormatInfo = "电话号码格式,比如010-67891234";
??????
?}
??????
?if(_elem.vtype=="mobiletel")????????
??????
?{??????
??????
??? thePat =
validrule.mobiletel;
??????
???
strFormatInfo = "手机号码格式,比如13867891234";
??????
?}??????
?
??????
?if(_elem.vtype=="ip")??????
??????
?{??????
??????
??? thePat =
validrule.ip;
??????
???
strFormatInfo = "机器ip地址格式,比如 172.22.169.11";
??????
?}
??????
?if(_elem.vtype=="url")??????
??????
?{??????
??????
??? thePat =
validrule.url;
??????
???
strFormatInfo = "url地址格式,比如 http://www.baidu.cn
";
??????
?}
??????
?if(_elem.vtype=="idcard")??????
??????
?{??????
??????
??? thePat =
validrule.idcard;
??????
???
strFormatInfo = "身份证号码,比如15位或者18位数字";
??????
?}
??????
?if(_elem.vtype=="tabledefine")??
??????
?{??????
??????
??? thePat =
validrule.tabledefine;
??????
???
strFormatInfo = "p_tablename";
??????
?}
??????
?if(_elem.vtype=="integer")????????
??????
?{??????
??????
??? thePat =
validrule.integer;
??????
???
strFormatInfo = "整数";
??????
?}
??????
?if(_elem.vtype=="number")????????
??????
?{??????
??????
??? thePat =
validrule.number;
??????
???
strFormatInfo = "数字字符";
??????
?}
??????
?if(_elem.vtype=="chinese")
??????
?{
??????
??? thePat =
validrule.chinese;
??????
???
strFormatInfo = "汉字";
??????
?}
??????
?if(_elem.vtype == "notsstring")
??????
?{
??????
??? thePat =
validrule.notsstring;
??????
???
strFormatInfo = "不包含空格和特殊字符的字符串";
??????
?}
??????
?
??????
?if(_elem.vtype == "persent"){
??????
?? thePat =
validrule.persent;
??????
?? strFormatInfo =
"百分比格式,比如:98";
??????
?}
??????
?
??????
?if(_elem.vtype == "fpersent"){
??????
??thePat =
validrule.fpersent;
??????
??strFormatInfo =
"百分比格式,比如:98.00";
??????
?}
??????
?
??????
?if(_elem.vtype == "tint"){
??????
??thePat = validrule.tint;
??????
??strFormatInfo =
"三位有效数字,比如:999";
??????
?}
??????
???????
?
??????
?var gotIt = null;
??????
?if(thePat!="")
??????
?{
??????
??????
gotIt = thePat.exec(_elem.value);
??????
?}??????
?
??????
?if(gotIt == null)
??????
?{
??????
??alert(_elem.vdisp+"输入不合法,格式应为:"+strFormatInfo);
??????
??_elem.focus();
??????
??return false;
??????
?}
?}?
?return true;
}
?
function submitForm(vform){
?if (doValidate(vform)){
??if (confirm('您确定提交吗?')){
???
??vform.submit();
??}
?}
}??
使用方法:
?
在form提交时判断便可,如:
if(doValidate(taskForm)){
??? document.taskForm.action="user-task!taskReportSave.action";
??? document.taskForm.submit();
}
?
输入框需要输入必要的属性,以供校验控件根据不同类型的数据进行校验,如:
<input type="text" name="entity.taskProcess" id="taskProcess" value="${entity.taskProcess}" notnull="true" vdisp="任务进度" vtype="persent" maxlength="5"/>
vtype属性为数据的属性,可以在js/validateform.js文件中定义属性
vdisp属性为数据属性的文字描述,数据提交校验失败的话,可以提示正确的信息。
?
?