表单验证

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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值