js状态模式 表单验证

//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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值