// 定义策略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
相关文章
如何用纯 CSS 实现鼠标悬停显示对应按钮(无需 JavaScript)
如何在 JavaScript 中统一处理字符串与字符串数组的搜索参数
如何在 Angular-Slickgrid 中同时启用行选择与单元格多选功能
合并具有相同 ID 的对象数组行:JavaScript 实战教程
如何将 RGB-16 调色板批量转换为 RGB-8 并支持多组调色板调用
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门AI工具
相关专题
本专题围绕漫蛙漫画(Manwa / Manwa2)官网网页版入口进行整理,涵盖漫蛙漫画官方主页访问方式、网页版在线阅读入口、台版正版漫画浏览说明及基础使用指引,帮助用户快速进入漫蛙漫画官网,稳定在线阅读正版漫画内容,避免误入非官方页面。
13
2026.02.03
本专题汇总了俄罗斯知名搜索引擎 Yandex 的官网入口、免登录访问地址、中文登录方法与网页版使用指南,帮助用户稳定访问 Yandex 官网,并提供一站式入口汇总。无论是登录入口还是在线搜索,用户都能快速获取最新稳定的访问链接与使用指南。
114
2026.02.03
本专题专注讲解 Java 中常用的设计模式,包括单例模式、工厂模式、观察者模式、策略模式等,并结合代码重构实践,帮助学习者掌握 如何运用设计模式优化代码结构,提高代码的可读性、可维护性和扩展性。通过具体示例,展示设计模式如何解决实际开发中的复杂问题。
3
2026.02.03
本专题系统讲解 C# 异步编程与并发控制,重点介绍 async 和 await 关键字、Task 类、线程池管理、并发数据结构、死锁与线程安全问题。通过多个实战项目,帮助学习者掌握 如何在 C# 中编写高效的异步代码,提升应用的并发性能与响应速度。
2
2026.02.03
本专题深入讲解 Python 在强化学习(Reinforcement Learning)中的应用,重点介绍 深度Q网络(DQN) 及其实现方法,涵盖 Q-learning 算法、深度学习与神经网络的结合、环境模拟与奖励机制设计、探索与利用的平衡等。通过构建一个简单的游戏AI,帮助学习者掌握 如何使用 Python 训练智能体在动态环境中作出决策。
3
2026.02.03
热门下载
精品课程
最新文章




