在做iview表单验证时出现了一个问题,我的程序中多次用到了表单中对IP的校验,那我想做一个封装,能通过将IP传参后进行判断,于是就有了下面的方法

//封装好的表单校验方法
const validateIP = (rule, value, callback, ip) => {
if(ip) {
let flag = true, valdata = ip.split("\n");
var reg = /^((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$/;
for(var i=0;i<valdata.length;i++){
if(!valdata[i].trim() || !reg.test(valdata[i])){
flag = false
callback(new Error('IP格式不正确'))
} else if(flag && valdata.length <= i+1) {
callback()
}
}
} else callback('IP地址不能为空')
}
//表单校验规则
ruleValidate: {
ip: {
required: true,
trigger: 'change,blur',
validator: ((rule, value, callback) => {
//这里是关键,使用闭包完成新参数的传入
validateIP(rule, value, callback, this.record.ip)
})
}
}
}
网友评论