Validate 表单验证插件

var Validate = function(el, rule, msg) {
  this.el = el;
  this.rule = rule;
  this.msg = msg;
};

Validate.prototype.validate = function() {
  var el = this.el, rule = this.rule, msg = this.msg, v = el.value, pass, i = 0;
  
  while(rule.length !== i) {
    pass = rule[i](v);
    if (!pass) {
      this.failed(msg[i]);
      return this;
    }
    i++;
  }
  
  this.success();
  return this;
};

window.onload = function() {
  var u = document.getElementById('username');
  var rule = {
    notempty : function(v) {
      return v !== '';
    },
    name: function(v) {
      return /^[\w|·|。|•|.|.|(\u4e00-\u9fa5)]{2,20}$/.test(v);
    }
  };
  
  var username = new Validate(u, [rule.notempty, rule.name], ['不能为空', '请输入正确的用户名']);
  username.failed = function(msg) {
    var el = this.el,
      parent = el.parentNode,
      require = parent.querySelector('.require'),
      errtip = parent.querySelector('.errtip'),
      textnode = document.createTextNode(msg),
      span = document.createElement('span');
    
    if (errtip) {
      errtip.style.display= 'inline';
      errtip.innerHTML = msg;
      return this;
    } 
    
    span.appendChild(textnode);
    span.classList.add('errtip'); span.style.color = 'red';
    parent.insertBefore(span, require.nextElementSibling);
    return this;
  };
  
  username.success = function() {
    var el = this.el;
    var errtip = el.parentNode.querySelector('.errtip');
    if (errtip) {
      errtip.innerHTML = '';
      errtip.style.display = 'none';
    }
    return this;
  }
  username.validate();
  window.username = username;
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值