87,997
社区成员




el.rule = { required: false, validator: funCheck, trigger: 'change' };
,只有当required值为true时才能触发funCheck方法,当required为false时触发不了,应该怎么设置才能在required值为false时也能触发自定义的funCheck方法呢?
data() {
return {
rules: {
// 默认设置不校验
phone: [{
required: false, validator: funCheck, trigger: 'blur'
}]
}
}
},
watch:
{
// 监听是否输入电话
'ruleForm.phone'(val){
if (val) {
// 输入值以后开启校验
this.$set(this.rules, 'phone', [{
required: true, validator: funCheck, trigger: 'blur'
}])
} else {
// 清空以后恢复为不校验
this.$set(this.rules, 'phone', [{
required: false, validator: funCheck, trigger: 'blur'
}])
}
}
},
function funCheck(rule, value, callback) {
var reg = /0\d{2,3}-\d{7,8}/;
if (value) {
if (!reg.test(value)) {
return callback(new Error('请检查固定电话格式'));
}
} else {
if (rule.required) {
return callback(new Error('固定电话不能为空'));
}
}
return callback();
}
[/quote]
动态改变rule的required属性值,当输入值以后改变required: true, 清空之后改变回false,这样就可以做到不输入不校验输入才校验。
function funCheck(rule, value, callback) {
var reg = /0\d{2,3}-\d{7,8}/;
if (value) {
if (!reg.test(value)) {
return callback(new Error('请检查固定电话格式'));
}
} else {
if (rule.required) {
return callback(new Error('固定电话不能为空'));
}
}
return callback();
}