项目需要自定义验证,需要验证的参数都是后端传过来的,
如果传过来的是数字,就要根据后端返回的min和max验证数字大小,但是element ui没有验证数字大小的方法,但是可以自定义验证规则(官网给的自定义验证方法不能传参),所以有了下面的方法
rules.push({
validator: (rule, value, callback) => {
if(min && max){
if (value > max || value < min){
return callback(new Error(`输入数值必须在${min}到${max}之间`))
}
}else if(max && value > max){
return callback(new Error(`输入数值必须小于${max}`))
}else if(min && value < min){
return callback(new Error(`输入数值必须大于${min}`))
}
}
})
上面这个方法,单个验证规则没问题,但是this.$refs[formName].validate()里面的内容怎么都不执行,
后来
发现!自定义验证的所有if都得闭环也就是,所有的if都得有else
validator: (rule, value, callback) => {
if(min && max){
if (value > max || value < min){
return callback(new Error(`输入数值必须在${min}到${max}之间`))
}else {
return callback()
}
}else if(max && value > max){
return callback(new Error(`输入数值必须小于${max}`))
}else if(min && value < min){
return callback(new Error(`输入数值必须大于${min}`))
}else {
return callback()
}
}
这样就没问题~