// 定义策略var strategy = {
isNotEmpty: function(value, errorMsg){
if(value === ''){
return errorMsg;
}
},
minLength: function(value, length, errorMsg){
if(value.length < length){
return errorMsg;
}
},
mobileFormat: function(value, errorMsg){
if(!/(^1[3|5|8][0-9]{9}$)/.test(value)){
return errorMsg;
}
}
}function Validator() {
this.cache = [];
}
Validator.prototype.add = function(value, rules){
for(var i = 0, rule; rule = rules[i++];){
var self = this;
(function(rule){
self.cache.push(function(){
var strategyRule = rule.strategy.split(':');
var strategyName = strategyRule.shift(); // 各位看官注意啦, 如果直接使用[value].concat(strategyRule.push(rule.errorMsg))会出问题
// 什么问题呢?
// strategyRule.push(rule.errorMsg)这货会返回length, 我TM调试了半天!
strategyRule.push(rule.errorMsg);
var arr = [value].concat(strategyRule);
return strategy[strategyName].apply(null,arr);
})
})(rule);
}
}
Validator.prototype.check = function(){
for(var i = 0, checkFn; checkFn = this.cache[i++];){
var msg = checkFn();
if(msg){
return msg;
}
}
}var validator = new Validator();
validator.add('12345', [
{
strategy: 'isNotEmpty',
errorMsg: 'in not empty'
},
{
strategy: 'minLength:10',
errorMsg: 'length is less than 10'
}
]);var tip = validator.check(); // tip: length is less than 10 0
0
相关文章
如何在 React 中通过函数动态更新子组件的 prop 值
如何在 Bootstrap 4 中实现左栏固定、右栏独立滚动的布局
如何实现点击选项时自动关闭其他已展开内容的 JavaScript 交互效果
什么是模块化以及如何用javascript实现它?【教程】
JavaScript 中基于命令序列更新坐标位置的完整教程
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门AI工具
相关专题
2026赚钱平台入口大全
2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。
76
2026.01.31
无需付费的漫画app大全
想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。
67
2026.01.31
漫画免费在线观看地址大全
想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。
19
2026.01.31
热门下载
精品课程
相关推荐
/
热门推荐
/
最新课程
最新文章






