js的一个前台验证框架

js的一个前台验证框架  

2012-11-08 10:33:56|  分类: js |  标签:js验证框架   |举报 |字号 订阅

validatorForm.js

 

/**

这个errMsg对象是这个js验证的主体,是定义的验证的规范

**/

var errMsg = {  // 检查特定字段是否为必填  required : {   msg : "->字段不能为空哦!",   test : function(obj, load) {    // 确保字段尚未有内容输入,并在页面加载时不做检查(在加载时显示"必填字段"可能会让用户感到厌烦    // return    // obj.value.length>0||load||obj.value==obj.defaultValue;//我似乎觉得defaultValue这个值似乎没有什么意义,所以在这里去掉(caoyong)    return obj.value.length > 0;   }  },  // 确保字段内容是正确的email地址  email : {   msg : "->字段不是一个电子邮件地址哦!",   test : function(obj) {    // 确保输入并符合email地址的格式    return !obj.value      || /^[a-z0-9_+.-]+\@([a-z0-9-]+\.)+[a-z0-9]{2,4}$/i        .test(obj.value);   }  },

 // 确保字段内容是电话号码并将其自动格式化  phone : {   msg : "->字段不是一个电话号码!",   test : function(obj) {    // 确保他是否符合电话号码要求    var m = /(\d{3}).*(\d{3}).*(\d{4})/.exec(obj.value);    // 如果是,可能也只是表面正确而已-强行检查它的格式是否符合我们的要求;(123)456-7890    if (m)     obj.value = "(" + m[1] + ")" + m[2] + "-" + m[3];    return !obj.value || m;   }  },

 handPhone : {   msg : "->不是一个有效的手机号!",   test : function(obj) {    // 确保他是否符合电话号码要求    var m = /[0-9]{1,11}/.exec(obj.value);    // 如果是,可能也只是表面正确而已-强行检查它的格式是否符合我们的要求;(123)456-7890    return !obj.value || m;   }  },  isIP : {   msg : "->不是一个有效的ip哦!",   test : function(obj) {    // 确保他是否符合电话号码要求    var m = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/g.exec(obj.value);    // 如果是,可能也只是表面正确而已-强行检查它的格式是否符合我们的要求;(123)456-7890    return !obj.value || m;   }  },  isNumber : {   msg : "->不是一个数字哦!",   test : function(obj) {    // 确保他是否符合电话号码要求    var m = /^\d+(\.\d*)?$/.exec(obj.value);    // 如果是,可能也只是表面正确而已-强行检查它的格式是否符合我们的要求;(123)456-7890    return !obj.value || m;   }  },      isInt : {   msg : "->不是一个整数哦!",   test : function(obj) {    // 确保他是否符合电话号码要求    var m = /^\d+$/.exec(obj.value);    // 如果是,可能也只是表面正确而已-强行检查它的格式是否符合我们的要求;(123)456-7890    return !obj.value || m;   }  },

 isHaoduan : {   msg : "->不是一个号段,号段由7位或者11位的数字组成!",   test : function(obj) {    // 确保他是否符合电话号码要求    var m = /^\d[7]|\d[11]$/.exec(obj.value);    // 如果是,可能也只是表面正确而已-强行检查它的格式是否符合我们的要求;(123)456-7890    return !obj.value || m;   }  },

 // 确保字段内容符合MM/DD/YYYY的时间格式  date : {   msg : "->不是一个有效的日期!",   test : function(obj) {    return !obj.value || /^\d{2,4}\/\d{2}\/\d{2}$/.test(obj.value)      || /^\d{2,4}-\d{2}-\d{2}$/.test(obj.value)      || /^\d{2,4}-\d{2}-\d{2}\s\d{1,2}:\d{1,2}:\d{1,2}$/.test(obj.value);   }  },  // 确保字段内容是一个正确的URL  url : {   msg : "->不是一个有效的URL地址哦!",   test : function(obj) {    // 确保有文本输入,而且不是默认的http://文本    return !obj.value      || obj.value == 'http://'      || /^https?:\/\/([a-z0-9-]+\.)+[a-z0-9]{2,4}.*$/        .test(obj.value);

  }  },  // 确保字段内容是一个正确的密码  isPassWord : {   msg : "->密码应该以字母开头,可以是字母、数字!@#$%^&*中的任意的6-16个字符!,",   test : function(obj) {    // 确保有文本输入,而且不是默认的http://文本    return !obj.value      || /^[a-zA-Z]{1}[a-zA-Z0-9!@#$%^&*]{5,16}$/.test(obj.value);   }  } }

// 显示表单内特定字段的错误信息 function showErrors(divName, errors) {  document.getElementById(divName).innerHTML = "<font color='red'>" + errors    + "</font>"; }

/**

*validatorJson是前台写的具体限定输入的json

*errorDIV将错误信息在id为errorDIV的div上面显示出来

**/

function validElems(validatorJson, errorDIV) {

 var flag = true;  for ( var i = 0; i < validatorJson.length; i++) {   var elem = validatorJson[i];   var validObj = elem['valide'];   if (validObj && validObj.length == 0) {    continue;   }   var item = document.getElementById(elem.id);   for ( var j = 0; j < validObj.length; j++) {    var validValue = validObj[j];    flag = errMsg[validValue].test(item);

   if (!flag) {     showErrors(errorDIV, elem.name + errMsg[validValue].msg);     item.focus();     return flag;    }   }

 }  return flag;

}

引用实例(一个jsp):

<%@ page language="java" pageEncoding="UTF-8"  contentType="text/html; charset=UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>XX系统</title> <script type="text/javascript"  src="http://cyxinda.blog.163.com/blog/../js/validatorForm.js"></script> <script type="text/javascript">

function sumbmit_()   {   var validatorJson = [                           {'id':'cooperationName','name':'XXX名称','valide':['required']},                           {'id':'licenseNo','name':'工商营业执照号','valide':['required']},                                 {'id':'chairManAge','name':'理事长年龄','valide':['required','isInt']}                           ]; var flag = validElems(validatorJson, "tips"); if (!flag) {    return false;   }  $("#cooperationForm").submit();  }; </script> </head> <body>  <div class="contents">   <br />   <div class="top">    <h1>     <img src="http://cyxinda.blog.163.com/blog/${pageContext.request.contextPath}/images/xjsw/logo_.gif"      alt="XXXXX系统" />    </h1>   </div>   <form id="cooperationForm" style="text-align: center;" method="post"    action="${pageContext.request.contextPath}/cooperation/cooperation.do">    <div class="search_div" style="width: 640px;">     <input type="hidden" name="theForm.action" value="do_add" />     <table class="add">      <caption class="caption_add">       <img        src="http://cyxinda.blog.163.com/blog/../images/xjsw/update.gif"        alt="XXX管理系统" /> 添加XXX      </caption>      <tr>       <td colspan="4">        <div id="tips"         style="margin: 0; border: 0; padding: 0; float: left; color: red;"></div>       </td>      </tr>      <tr>       <td class="fieldText">XXX名称:</td>       <td><input type="text" id="cooperationName"        name="theForm.cooperationName" class="textInput"        value="${theForm.cooperationName }" /><span        style="color: red; font-weight: bold;">&nbsp;*</span></td>       <td class="fieldText">工商营业执照号:</td>       <td><input type="text" id="licenseNo"        name="theForm.licenseNo" class="textInput"        value="" /><span        style="color: red; font-weight: bold;">&nbsp;*</span></td>      </tr>      <tr>       <td class="fieldText">理事长姓名:</td>       <td><input type="text" id="chairManName"        name="theForm.chairManName" class="textInput"        value="" /><span        style="color: red; font-weight: bold;">&nbsp;*</span>       </td>       <td class="fieldText">理事长年龄:</td>       <td><input type="text" id="chairManAge"        name="theForm.chairManAge" class="textInput"        value="" />       </td>      </tr>      <tr style="background-color: #FFFFFF;">       <td colspan="4"        style="padding-top: 15px; border-top: 1px solid green; text-align: center;"><input        class="button" type="button" value="提交" name="Input"        id="submit_button" style="cursor: pointer;" onclick="sumbmit_();" />        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        <input class="button" type="button" value="重置" name="input_reset"        style="cursor: pointer;" /></td>      </tr>     </table>    </div>   </form>  </div> </body> </html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JSValidation是强大灵活的客户端验证框架。在应用服务器或者开发框架不提供验证的情况下,例如,普通的JSP, ASP, PHP等开发,以及一些不提供验证支持的开发框架,如Tapestry, Velocity等,JSValidation提供了一种灵活的解决方案。与其他验证方式相比,它最大的优点在于独立与易于集成。纯JavaScript结构,可以很容易的集成到现有的应用中而不论现有的应用是基于什么语言。将所有的表单验证集中管理,使得维护应用更加容易。简便的XML配置,易于扩充的验证方式(目前支持13种验证,囊括了大部分常用表单验证),使得JSValidation成为验证框架的首选。 <br>1. JSValidation是什么?<br>如首页所说,JSValidation是客户端表单验证框架,用在BS系统中,或者简单的网页系统中。表单验证在这些开发中很常见:新用户注册,需要校验某些字段;用户登陆,需要校验;等等。在这之前,页面开发者(JavaScript开发者)需要编写大量的JavaScript来与表单对象交互,并进行校验。常见的校验如不能为空,必须满足长度要求,必须为数字,必须为Email等等。根据一般的经验,如果表单中需要校验的域个数超过10个,开发过程就显得枯燥无味——多段重复的代码不断重复,如果要求跨浏览器,更多的考虑因素使人头疼不已。往往这个页面的验证还不能用于那个验证……虽然逻辑基本相同;但是在大多数情况下,出于种种原因,开发者宁愿(或者没办法)重新编写另一个页面的JavaScript代码。<br><br>JSValidation致力于改善这一过程。它将常见的校验(目前支持13种)封装起来,并创造性的采用xml来存贮表单验证信息,使得表单的验证成为整个项目中最不重要的环节,开发者只需要定义几个xml标记,就可以创建出复杂的验证策略,而不用编写一行JavaScript代码。由于采用xml集中管理表单验证,使得表单验证在整个系统中的耦合度大大降低,并且易维护性大大提高。开发者更多的精力可以投入到业务相关的代码中。<br><br>恰恰相反,JSValidation内部结构虽然不太简单(对用户而言),但是调用方式却极其简单,配置好环境后,只需要在需要验证的表单的HTML标记中加上onsubmit="return doValidate('formId')"即可。这并没有改变开发者的习惯。<br><br>更为明显的优势是,JSValidation具备跨浏览器的能力。在目前的测试环境下,支持IE5及以上版本,Mozilla系列和支持DOM2模型的其他浏览器。你不用再考虑在多浏览器下如何兼容,JSValidation帮你做到了这些。<br><br>2. JSValidation能做什么,不能做什么?<br>如上所述,JSValidation能够校验表单。在系统复杂,表单复杂的场景下,JSValidation的优势更加突出。JSValidation目前能够完成客户端的13种验证如下:<br><br>取值非空 <br>必须为整数 <br>必须为双精度数 <br>必须为普通英文字符(字母,数字,下划线) <br>必须为中文字符 <br>最小长度 <br>最大长度 <br>是否为Email格式 <br>是否为日期格式(yyyy-mm-dd) <br>自定义的正则表达式 <br>整数范围(大于某数小于某数) <br>双精度数范围 <br>必须与某个域的值相同 <br>所有这些验证都在客户端完成。如果还有在此之外的验证需求,请告诉我们,我们会跟据需求程度开发出新的验证模型。<br><br>JSValidation不能做的:<br><br>跨页面的验证。例如,A页面输入值,必须满足B页面中某一个值的条件,或者更多的页面。这个需求需要用户的反馈。如果在现实开发中这种需求很普遍,我们会考虑开发。目前的替代方式是,将A页面需要验证的值POST到B页面的一个Hidden Field,然后再使用已有的验证方式。 <br>与服务器交互验证。最常见的是输入用户名密码后登录。限于它的表示范围,JSValidation不能完成这个工作。 <br>其他没有提到的,很希望你能告诉我们。 <br><br>请大家帮忙顶,这么好的东东不能叫他沉了啊<br>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值