设计模式编写表单验证

/**
* Created by kyn on 19/1/10.
*/
var KYN_VALIDATION = (function (win) {
 var Validation = function () {
/**
* 设计一个symbol判断弹窗是否设置
*/
  var _isAlert = false,
/**
* 自带弹窗 默认alert
*/
  _alert = function (_msg) {
    if (_isAlert) {
      _alertMsg(_msg)
    } else {
      alert(_msg)
    }
  },
/**
* 外部存写入方法 储存区
*/
  _outRule = [],
/**
* 内部的验证方法库
*/
  _rule = {
    maxLength: function (_obj) {
      var _ruleLength = _obj['length'] ? _obj['length'] : 6;
      if (_obj['val'] * 1 > _ruleLength * 1) {
        _alert(_obj['errMsg']);
        return false;
      }else {
        return true;
      }
   },
   minLength: function (_obj) {
     var _ruleLength = _obj['length'] ? _obj['length'] : 1;
     if (_obj['val'] * 1 < _ruleLength * 1) {
       _alert(_obj['errMsg']);
         return false;
       }else{
         return true;
         }
    },
    isWriting: function (_obj) {
      if (_obj['val'] == 0) {
        _alert(_obj['errMsg']);
        return false;
      }else{
        return true;
      }
    }

  };

/**
* 预留外部弹窗方法
*/
  function _alertMsg() {

  }

  /**
    * 写入自定义弹窗方法
         */
  function _setAlertFunction(_fun) {
    if ( _fun && typeof _fun == 'function'){
    /**
    * 改写外部弹窗方法 并且关闭开关
    */
      _isAlert = true;

      _alertMsg = function (_msg) {
        return _fun(_msg);
      };

    }


  }

/**
* 外部添加验证方案
* @param _obj
*/
  function _addTestRule(_obj) {
    _outRule.push(_obj);
    return this;
  }

  function _checkRule() {
    for (var i = 0, _length = _outRule.length; i < _length; i++) {
       /**
        * 对每个方法进行循环进行,当发生问题的时候清空 外部导入方法
                     */
        if (!_rule[_outRule[i]['name']].call(this,_outRule[i])) {
      /**
       * 清空储存过的需要校验的规则
                      */
         _outRule = [];
            return false;
      }
    }
  }
// 暴露公用方法 外部调用
  return {
    setAlertFunction: _setAlertFunction,
    addTestRule: _addTestRule,
    checkRule: _checkRule
  }
 };
  return Validation;
})(window);

 

posted @ 2019-01-10 21:23  xyyyy  阅读(301)  评论(0编辑  收藏  举报