项目中使用element-ui表单,同时需要处理一些特殊条件下,需要进行表单校验。一些特殊条件下使用了v-if,从而导致了部分表单校验失效。本文就列举出现这种情况的原因和解决方法
1、现象:
切换到"外部链接"后,由于"链接地址"是v-if控制的,没有填写表单,点击上传,发现表单必填验证只有一个
2、原因:
如果我们使用 v-if 指令动态切换 Element UI 表单组件,那么在隐藏的表单中定义的校验规则会失效,这也是正常现象。 这是因为当表单使用 v-if 指令进行条件显示时,它实际上被移出了 DOM 树,从而使其绑定的校验规则无法正常工作,表单绑定验证规则是在mounted中执行的,验证规则改变后没有重新绑定,vue复用dom节点,验证规则就失效了
3、解决:
- 1、使用
v-show指令替代v-if指令。v-show只是在修改元素的样式(display:none)控制其隐藏和显示,元素在DOM中仍然存在,因此不会影响校验规则的生效。 - 2、在需要使用表单验证的el-form-item上,添加key字段,保证不会被复用,就会重新创建校验规则