问题
el-form表单联动el-tree进行赋值,赋值后依旧提示“xxx不能为空”的问题
操作如下:
1.点击表单的input
2.弹出树形组件,点击el-tree的值A,
3.弹框自动关闭,A自动赋值到input中,
4.此时element的验证会提示“xxx不能为空”,然而input中是有值A的,且不影响提交,
5.二次点击input,选取el-tree的值,“xxx不能为空”的提示消失
原因
出现这个问题,是因为rules规则input上{trigger:blur}(失去焦点时验证表单内容)。点击input,出现弹出框,此时input失去焦点,并且input确实没有值,所以失去焦点会触发rules验证;当el-tree上的值赋值给input时,没有“失去焦点”操作,所以rules不会进行验证,而是维持上一次的验证结果,即提示用户没有输入值。
解决
解决方法一:点击input,给input赋值如”请输入xxx“,然后出现弹出框(无效)
解决方法二:rules中input的规则改为{trigger:change}(无效)
解决方法三:赋值完,强制清除提示:
1、rules中该字段的trigger依旧为blur
2、在赋值后的地方加上代码this.$refs["表单名"].clearValidate()
,
其中表单名称为如图ref的form,
//清除所有
写法为:this.$refs["form"].clearValidate()
//清除指定
写法为: this.$refs["form"].clearValidate('prop绑定的值')