开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1435|回复: 0
收起左侧

[JS例程分享] 通用的javascript 表单验证工具

[复制链接]
结帖率:52% (14/27)
发表于 2013-2-17 05:28:50 | 显示全部楼层 |阅读模式   湖北省荆州市
  1. $(function(){
  2.         //拦截form,在form提交前进行验证
  3.     $('form').bind('submit',beforeSubmit);
  4.        
  5.         //为带有valType属性的元素初始化提示信息并注册onblur事件
  6.         $.each($("[valType]"),function(i, n) {
  7.                 $(n).poshytip({
  8.                                 className: 'tip-yellowsimple',
  9.                                 content: $(n).attr('msg'),
  10.                                 showOn: 'none',
  11.                                 alignTo: 'target',
  12.                                 alignX: 'right',
  13.                                 alignY: 'center',
  14.                                 offsetX: 5,
  15.                                 offsetY: 10
  16.                         });
  17.                 $(n).bind('blur',validateBefore);
  18.         });
  19.        
  20.         //定义一个验证器
  21.         $.Validator=function(para) {
  22.                
  23.        
  24.         }

  25.         $.Validator.ajaxValidate=function() {
  26.                 beforeSubmit();
  27.         }
  28.        
  29.         //验证的方法
  30.         $.Validator.match=function(para) {
  31.                 //定义默认的验证规则
  32.                 var defaultVal = {
  33.                         NUMBER : "^[0-9]*$",
  34.                         TEL : "^0(10|2[0-5789]|\\d{3})-\\d{7,8}$",
  35.                         IP : "^((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]|[*])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]|[*])$",
  36.                         MOBILE : "^1(3[0-9]|5[0-35-9]|8[0235-9])\\d{8}$",
  37.                         MAIL : "^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$",
  38.                         IDENTITY : "((11|12|13|14|15|21|22|23|31|32|33|34|35|36|37|41|42|43|44|45|46|50|51|52|53|54|61|62|63|64|65|71|81|82|91)\\d{4})((((19|20)(([02468][048])|([13579][26]))0229))|((20[0-9][0-9])|(19[0-9][0-9]))((((0[1-9])|(1[0-2]))((0[1-9])|(1\\d)|(2[0-8])))|((((0[1,3-9])|(1[0-2]))(29|30))|(((0[13578])|(1[02]))31))))((\\d{3}(x|X))|(\\d{4}))",
  39.                         CHINESE : "^([\u4E00-\uFA29]|[\uE7C7-\uE7F3])*$",
  40.                         URL : "^http[s]?://[\\w\\.\\-]+$"
  41.                 };
  42.                 var flag=false;
  43.                 if(para.rule=='OTHER') {//自定义的验证规则匹配
  44.                         flag=new RegExp(para.regString).test(para.data);
  45.                 }
  46.                 else {
  47.                         if(para.rule in defaultVal) {//默认的验证规则匹配
  48.                         flag=new RegExp(defaultVal[para.rule]).test(para.data);
  49.                         }
  50.                 }
  51.                
  52.                 return flag;
  53.         }

  54.        
  55.        
  56.         //为jquery扩展一个doValidate方法,对所有带有valType的元素进行表单验证,可用于ajax提交前自动对表单进行验证
  57.         $.extend({
  58.                 doValidate: function() {
  59.                         return $.Validator.ajaxValidate();
  60.                 }
  61.         });

  62.    });

  63. //输入框焦点离开后对文本框的内容进行格式验证
  64. function validateBefore() {
  65.         //验证通过标识
  66.         var flag=true;
  67.         //获取验证类型
  68.         var valType=$(this).attr('valType');
  69.         //获取验证不通过时的提示信息
  70.         var msg=$(this).attr('msg');
  71.         //自定义的验证字符串
  72.         var regString;
  73.        
  74.         if(valType=='OTHER') {//如果类型是自定义,则获取自定义的验证字符串
  75.                 regString=$(this).attr('regString');
  76.                 flag=$(this).val()!=''&&$.Validator.match({data:$(this).val(), rule:$(this).attr('valType'), regString:$(this).attr('regString')});
  77.         }
  78.         else {//如果类型不是自定义,则匹配默认的验证规则进行验证
  79.                 if($(this).attr('valType')=='required') {//不能为空的判断
  80.                         if($(this).val()=='') {
  81.                                 flag=false;
  82.                         }
  83.                 }
  84.                 else {//已定义规则的判断
  85.                         flag=$(this).val()!=''&&$.Validator.match({data:$(this).val(), rule:$(this).attr('valType')});
  86.                 }
  87.         }
  88.         //先清除原来的tips
  89.         $(this).poshytip('hide');
  90.         //如果验证没有通过,显示tips
  91.         if(!flag) {
  92.                         $(this).poshytip('show');
  93.         }
  94.        
  95. }

  96. //submit之前对所有表单进行验证
  97. function beforeSubmit() {
  98.         var flag=true;
  99.         //alert($("[valType]").length);
  100.          $.each($("[valType]"),function(i, n) {
  101.                  //清除可能已有的提示信息
  102.                  $(n).poshytip('hide');
  103.                                  
  104.                 if($(n).attr("valType")=='required') {//对不能为空的文本框进行验证
  105.                         if($(n).val()=='') {
  106.                         //显示tips                       
  107.                         $(n).poshytip('show');
  108.                         flag=false;
  109.                         }
  110.                 }
  111.                 else if($(n).attr("valType")=='OTHER') {//对自定义的文本框进行验证
  112.                         if(!($(this).val()!=''&&$.Validator.match({data:$(this).val(), rule:$(this).attr('valType'), regString:$(this).attr('regString')}))) {
  113.                                 $(n).poshytip('show');
  114.                                 flag=false;
  115.                         }
  116.                 }
  117.                 else {//对使用已定义规则的文本框进行验证                       
  118.                         if(!($(this).val()!=''&&$.Validator.match({data:$(this).val(), rule:$(this).attr('valType')}))) {
  119.                                 $(n).poshytip('show');
  120.                                 flag=false;
  121.                         }
  122.                 }
  123.          });
  124.      return flag;
  125. }


  126. //下面是测试代码,不属于验证器的功能代码之内
  127. //用原型的方式来模拟js的类
  128. function Validators() {

  129. }

  130. Validators.prototype.subByJs=function(e) {
  131.         if($.doValidate()) {
  132.                 alert('验证通过');
  133.                 //todo
  134.         }
  135. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表