表单验证插件(练习)

下面的几项表单验证,是练习demo,发表只为留个纪念~ 
<!doctype html>
<html>
<head>
  <title>表单验证</title>
  <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
  <script type="text/javascript"  charset="utf-8" src="jquery-1.6.1.js"></script>
  <style type="text/css" >
    form {
      width:500px;
      margin:50px auto;
    }
    span {
      display:inline-block;color:red;
    }
    p:nth-last-child(1){
      color:red;
    }
  </style>
</head>
<body>
  <script type="text/javascript">
    $(document).ready(function(){
      $.fn.validate = function(){
        var validator = $(this);
        var count = 0;
        var mes_show = function($this, message){
          var selector = $this.attr('validate_type') + '_span';
          if (message == 'success' || message == '')
          { if ($('.' + selector).length == 0)
            {
              $this.after('<span class="' + selector + '"></span>');
            }else{
              $('.' + selector).replaceWith('<span class="' + selector + '"></span>');
            };
          }else{
            if ($('.' + selector).length == 0)
            {
              $this.after('<span class="' + selector + '">' + message + '</span>');
            }else{
              $('.' + selector).replaceWith('<span class="' + selector + '">' + message + '</span>');
            };
          };
        };
        var checkfunction= function(string,reg){
            return reg.test(string);
          };
        var email_validate = function($this){
          var flag = checkfunction($this.val(), /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/);
          if (!flag)
          {
            return '邮箱格式不正确';
          }else{
            return 'success';
          };
        };
        var identity_validate = function($this){
          var flag = checkfunction($this.val(), /^\d{18}$/);
          if (!flag)
          {
            return '身份证号应为18位'
          }else{
            return 'success';
          };
        };
        var phone_validate = function($this){
          var flag = checkfunction($this.val(), /^1\d{10}$/);
          if (!flag)
          {
            return '手机号码不正确';
          }else{
            return 'success';
          };
        };
        var name_validate = function($this){
          var min = $this.attr('min_size');
          var max = $this.attr('max_size');
          if ((min !== undefined)&&(max !== undefined))
          {
            flag = checkfunction($this.val(), /^\S+$/);
            if (flag && ($this.val().length >= min) && ($this.val().length <= max))
            {
              return 'success';
            }else{
              return '输入名称应为' + min +'到' + max + '位';
            };
          }else{
            if (min !== undefined)
            {
              flag = checkfunction($this.val(), /^\S+$/);
              if (flag && $this.val().length >= min)
              {
                return 'success';
              }else{
                return '输入名称不能少于' + min + '位';
              };
            }else{
              if (max !== undefined)
              {
                flag = checkfunction($this.val(), /^\S+$/);
                if (flag && $this.val().length <= max)
                {
                  return 'success';
                }else{
                  return '输入名称不能超过' + max + '位';
                };
              }else{
                return '名称不能为空';
              }
            }
          };
        };
        var password_validate = function($this){
          var min = $this.attr('min_size');
          var max = $this.attr('max_size');
          if ((min !== undefined)&&(max !== undefined))
          {
            flag = checkfunction($this.val(), /^[a-zA-Z0-9]+$/);
            if (flag && ($this.val().length >= min) && ($this.val().length <= max))
            {
              return 'success';
            }else{
              return '密码长度应为' + min +'到' + max + '位';
            };
          }else{
            if (min !== undefined)
            {
              flag = checkfunction($this.val(), /^[a-zA-Z0-9]+$/);
              if (flag && $this.val().length >= min)
              {
                return 'success';
              }else{
                return '密码长度不能少于' + min + '位';
              };
            }else{
              if (max !== undefined)
              {
                flag = checkfunction($this.val(), /^[a-zA-Z0-9]+$/);
                if (flag && $this.val().length <= max)
                {
                  return 'success';
                }else{
                  return '密码长度不能超过' + max + '位';
                };
              }else{
                flag = checkfunction($this.val(), /^[a-zA-Z0-9]+$/);
                if (flag)
                {
                  return 'success'
                }else{
                  return '密码不能为空';
                };
              };
            };
          };
        };
        var password_value = function(){
          var input_password = validator.find('input[type="password"]');
          var value_0 = input_password[0].value;
          var value_1 = input_password[1].value;
          if (value_0 == value_1)
          {
            return '';
          }else{
            return '两次输入密码不一致';
          };
        };
        
        var input_validate = function($this){
          switch ($this.attr('validate_type'))
          {
          case 'email' :
            mes_show($this, email_validate($this));
            if (email_validate($this) == 'success')
            {
              count++;
            };
            break;
          case 'identity' :
            mes_show($this, identity_validate($this));
            if (identity_validate($this) == 'success')
            {
              count++;
            };
            break;
          case 'phone' :
            mes_show($this, phone_validate($this));
            if (phone_validate($this) == 'success')
            {
              count++;
            };
            break;
          case 'name' :
            mes_show($this, name_validate($this));
            if (name_validate($this) == 'success')
            {
              count++;
            };
            break;
          case 'password' :
            mes_show($this, password_validate($this));
            if (password_validate($this) == 'success')
            {
              count++;
            };
            break;
          case 're_password' :
            mes_show($this, password_value($this));
            if (password_value($this) == '')
            {
              count++;
            };
            break;
          };
        };
        validator.find('input[validate_type]').each(function(){
          $(this).bind('blur', function(){
            input_validate($(this));
          });
        });
        validator.bind('submit', function(){
          count = 0;
          $(this).find('input[validate_type]').each(function(){
            input_validate($(this));
          });
          if ( count == $(this).find('input[validate_type]').length)
          {
            return ture;
          }else{
            return false;
          };
        });
      };
      $('form').validate();
    });
  </script>
  <form>
    <p>邮箱:<input type="text" validate_type="email"/></p>
    <p>身份证:<input type="text" validate_type="identity"></p>
    <p>电话:<input type="text" validate_type="phone"/></p>
    <p>姓名:<input type="text" validate_type="name" min_size="4"/></p>
    <p>密码:<input type="password" validate_type="password" min_size="6"/></p>
    <p>确认密码:<input type="password" validate_type="re_password"/></p>
    <input type="submit" value="submit"/>
    <input type="reset" value="reset"/>
  </form>
</body>
</html>
插件说明:
   需要Jquery 
 js api 为 validate() ,例: $('form').validate();
  1.表单中每个需要验证的input标签中要加入validate_type属性,属性值对应如下:
        
           'email' 邮件,'identity' 身份证 ,'phone' 手机号码,'name' 名称 , 'password' 密码, 're_password' 确认密码;
  2.其中validate_type 为name 和 password 可以加上 最小长度 min_size 最大长度 max_size 的限制属性,例:
            
           <p>密码:<input type="password" validate_type="password" min_size="6"/></p>

转载于:https://www.cnblogs.com/beyond-self/archive/2011/08/30/2159682.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值