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属性为数据属性的文字描述,数据提交校验失败的话,可以提示正确的信息。