转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
用正则表达式和javascript对表单进行全面验证         ★★★★

用正则表达式和javascript对表单进行全面验证

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1213 更新时间:2009/4/23 11:21:41

代码:<!--
使用时请将下面的javascript代码存到一个单一的js文件中。
1、表单要求
 <form name="formname" onSubmit="return validateForm(this)"></form>
 将对表单中的所有以下类型的域依次验证,所有验证是去除了前导和后缀空格的,要注意是区分大小写的。
2、空值验证
 表单中任意域加上emptyInfo属性将对此域是否为空进行验证(可以和最大长度验证\一般验证方式同时使用)。
 无此属性视为此域允许空值。
  如:<input type="text" name="fieldNamename" emptyInfo="字段不能为空!">
3、最大长度验证(可以和空值验证、一般验证方式同时使用):
 <input type="text" name="fieldNamename" maxlength="20" lengthInfo="最大长度不能超过20!">
 或,<textarea maxlength="2000" lengthInfo="最大长度不能超过2000!">
3、一般验证方式(不对空值做验证):
  如:<input type="text" validator="^(19|20)[0-9]{2}$" errorInfo="不正确的年份!" >
4、标准验证(不与其它验证方式同时使用):
 全部通过<input type="hidden">来实现,并且不需要name属性以免提交到服务器。
  4.1、合法日期验证:
  <input type="text" name="yearfieldName" value="2004">注:这里也可以是<select name="yearfieldName"></select>,以下同
  <input type="text" name="monthfieldName" value="02">
  <input type="text" name="dayfieldName" value="03">
  <input type="hidden" validatorType="DateGroup" year="yearfieldName" month="monthfieldName" day="dayfieldName" errorInfo="不正确的日期!">
  yearfieldName、monthfieldName、dayfieldName分别为年月日字段,月和日可以是两位(MM)或一位格式(M),
  此处不对每个字段分别检验(如果要检验,请在年月日三个域分别使用前面的一般验证方式),只对日期的最大值是否合法检查;
 4.2、日期格式验证(请注意,此验证不对日期是否有效进行验证,还未找到从格式中得到年月日数据的方法^_^):
  <input type="text" name="datefieldName" value="2003-01-03 21:31:00">
  <input type="hidden" validatorType="Date" fieldName="datefieldName"; format="yyyy-MM-dd HH:mm:ss" errorInfo="不正确的日期!">
  其中格式仅对y、M、d、H、m、s进行支持(其它字符视为非时间的字符)
 4.3、列表验证:
  检验列表(checkbox、redio、select)是否至少选中了一条记录(对select主要用于多项选择)
  <input type="checkbox" name="checkbox1">
  <input type="hidden" validatorType="Checkbox" fieldName="checkbox1" errorInfo="请至少选中一条记录!">
  其中validatorType可以是Checkbox、R、Select;
  对于一个select表单,如果要求选择一条不能是第一条的记录,请用下列方式:
  <select name="select1" emptyInfo="请选择一个选项!">
  <option value="">==请选择==</option>
  <option value="1">1</option>
  <select>
 4.4、Email验证:
  <input type="text" name="email">
  <input type="hidden" fieldName="email" validatorType="Email" separator="," errorInfo="不正确的Email!">
  其中separator为可选项,表示输入多个email时的分隔符(无此选项只能是一个地址)
 4.5、加入其它javascript操作:
 <script type="text/javascript">
  function functionname(){
    自定义方法
  }
 </script>
 表单中加入<input type="hidden" validatorType="javascript" functionName="functionname">(此时emptyInfo等属性无效)
  时将调用function属性中指定的javascript方法(要求方法返回true或false,返回false将不再验证表单,也不提交表单)。
5、在表单通过验证提交前disable一个按钮(也可将其它域disable,不能与其它验证同在一个域),不要求按钮是表单中的最后一个
 <input type="button" name="提交" validatorType="disable">
6、不验证表单
  <input type="hidden" name="validate" value="0" functionName="functionname">
 当validator域值为0时不对表单进行验证,直接提交表单或执行指定function并返回true后提交表单
 functionName为可选

-->
<script type="text/javascript">
function getStringLength(str){
  var endvalue=0;
  var sourcestr=new String(str);
  var tempstr;
  for (var strposition = 0; strposition < sourcestr.length; strposition ++) {
    tempstr=sourcestr.charAt(strposition);
    if (tempstr.charCodeAt(0)>255 || tempstr.charCodeAt(0)<0) {
      endvalue=endvalue+2;
    } else {
      endvalue=endvalue+1;
    }
  }
  return(endvalue);
}
function trim(str){
  if(str==null) return "";
  if(str.length==0) return "";
  var i=0,j=str.length-1,c;
  for(;i<str.length;i++){
    c=str.charAt(i);
    if(c!=' ') break;
  }
  for(;j>-1;j--){
    c=str.charAt(j);
    if(c!=' ') break;
  }
  if(i>j) return "";
  return str.substring(i,j+1);
}
function validateDate(date,format,alt){
  var time=trim(date.value);
  if(time=="") return;
  var reg=format;
  var reg=reg.replace(/yyyy/,"[0-9]{4}");
  var reg=reg.replace(/yy/,"[0-9]{2}");
  var reg=reg.replace(/MM/,"((0[1-9])|1[0-2])");
  var reg=reg.replace(/M/,"(([1-9])|1[0-2])");
  var reg=reg.replace(/dd/,"((0[1-9])|([1-2][0-9])|30|31)");
  var reg=reg.replace(/d/,"([1-9]|[1-2][0-9]|30|31))");
  var reg=reg.replace(/HH/,"(([0-1][0-9])|20|21|22|23)");
  var reg=reg.replace(/H/,"([0-9]|1[0-9]|20|21|22|23)");
  var reg=reg.replace(/mm/,"([0-5][0-9])");
  var reg=reg.replace(/m/,"([0-9]|([1-5][0-9]))");
  var reg=reg.replace(/ss/,"([0-5][0-9])");
  var reg=reg.replace(/s/,"([0-9]|([1-5][0-9]))");
  reg=new RegExp("^"+reg+"$");
  if(reg.test(time)==false){//验证格式是否合法
    alert(alt);
    date.focus();
    return false;
  }
  return true;
}
function validateDateGroup(year,month,day,alt){
  var array=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
  var y=parseInt(year.value);
  var m=parseInt(month.value);
  var d=parseInt(day.value);
  var maxday=array[m-1];
  if(m==2){
    if((y%4==0&&y%100!=0)||y%400==0){
      maxday=29;
    }
  }
  if(d>maxday){
    alert(alt);
    return false;
  }
  return true;
}
function validateCheckbox(obj,alt){
  var rs=false;
  if(obj!=null){
    if(obj.length==null){
      return obj.checked;
    }
    for(i=0;i<obj.length;i++){
      if(obj[i].checked==true){
        return true;
      }
    }
  }
  alert(alt);
  return rs;
}
function validateRadio(obj,alt){
  var rs=false;
  if(obj!=null){
    if(obj.length==null){
      return obj.checked;
    }
    for(i=0;i<obj.length;i++){
      if(obj[i].checked==true){
        return true;
      }
    }
  }
  alert(alt);
  return rs;
}
function validateSelect(obj,alt){
  var rs=false;
  if(obj!=null){
    for(i=0;i<obj.options.length;i++){
      if(obj.options[i].selected==true){
        return true;
      }
    }
  }
  alert(alt);
  return rs;
}
function validateEmail(email,alt,separator){
  var mail=trim(email.value);
  if(mail=="") return;
  var em;
  var myReg = /^[_a-z0-9]+@([_a-z0-9]+\.)+[a-z0-9]{2,3}$/;
  if(separator==null){
    if(myReg.test(email.value)==false){
      alert(alt);
      email.focus();
      return false;
    }
  }
  else{
    em=email.value.split(separator);
    for(i=0;i<em.length;i++){
      em[i]=em[i].trim();
      if(em[i].length>0&&myReg.test(em[i])==false){
        alert(alt);
        email.focus();
        return false;
      }
    }
  }
  return true;
}
function validateForm(theForm){// 若验证通过则返回true
  var disableList=new Array();
  var field = theForm.elements; // 将表单中的所有元素放入数组
  for(var i = 0; i < field.length; i++){
    var vali=theForm.validate;
 if(vali!=null){
   if(vali.value=="0"){
     var fun=vali.functionName;
  if(fun!=null){
    return eval(fun+"()");
  }
  else{
    return true;
  }
   }
 }

    var empty=false;
    var value=trim(field[i].value);
    if(value.length==0){//是否空值
      empty=true;
    }
    var emptyInfo=field[i].emptyInfo;//空值验证
    if(emptyInfo!=null&&empty==true){
      alert(emptyInfo);
      field[i].focus();
      return false;
    }
    var lengthInfo=field[i].lengthInfo;//最大长度验证
    if(lengthInfo!=null&&getStringLength(value)>field[i].maxLength){
      alert(lengthInfo);
      field[i].focus();
      return false;
    }

    var validatorType=field[i].validatorType;
    if(validatorType!=null){//其它javascript
  

[1] [2]  下一页


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台