//js状态模式 可以避免过多if else
//表单验证规则 在每个需要验证的页面定义
var rules = [
{key:'name',reg:/^(?![^a-zA-Z]+$)(?!\D+$).{6,12}$/,msg:'字母和数字6-12位'},
{key:'age',reg:/^[1-9]\d*$/,msg:'纯数字'}
]
// 状态函数 定义在tools.js中
function statusForm(rules){
let formStatus = {} //存放 状态对象
for(let item of rules){
let key = item.key // 对应需要检验 form 的属性
let reg = item.reg //验证规则
formStatus[key] = function(val){
return reg.test(val)
}
}
return formStatus
}
// 最终绑定在tools上面的方法
/*
* @params rules 定义的规则
* @params form 检验的表单form
*/
function validate(rules,form){
var status = statusForm(rules) //先获取到 状态对象
/*{
name(val){
return ****
}*/
for(let key in status){
let method = status[key]
let val = form[key]
if(!method(val)) return false
}
return true
}
var form = {name:'你的名字长度是否有6a位',age:'s13'}
let result = validate(rules,form) //返回结果 true 或者false
console.log(validate(rules,form)) //false
js状态模式 表单验证
最新推荐文章于 2024-04-30 08:58:14 发布