/**
* 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);