问题描述

使用elementui的form表单组件,如果其中几个表单项使用了v-if进行UI切换,并且默认v-if="false"不可见,切换的元素又是必填项时,那么在验证的时候,就会出现很奇怪的bug。

原因:

elementui在对form表单中带有prop属性的子组件进行校验规则绑定时,是在vue声明周期mounted完成的。而v-if用来切换的元素是会被销毁的,导致了v-if内的表单项,由于在mounted时期没有进行渲染,所以规则也没有绑定上。
那么就对el-form-item使用rules来进行动态绑定`,一旦切换就会绑定上这个rules。

另一个坑,自定义的验证方法中,比如validLandlordName(rule, value, callback) {},有时会出现value这个值取不到为空。那么就直接获取你输入的属性值this.houseInfo.landlord.landlordName来进行验证,不要再对value进行判断了。

<el-form ref="form" :rules="rules" :model="houseInfo" inline size="mini" label-width="150px"><el-row><el-col><el-form-item label="所属社区" label-width="150px" prop="communityId"><el-select v-model.trim="houseInfo.communityId" placeholder="所属社区" :disabled="true"><el-option v-for="item in communityList" :value="item.communityId" :label="item.communityName" :key="item.communityId"></el-option></el-select></el-form-item></el-col></el-row><!--  houseInfo.houseType 值为4--><el-row v-if="houseInfo.houseStatus == 4"><el-col><el-form-item label="所属楼栋/单元" prop="buildingId" label-width="150px"><el-cascader placeholder="所属楼栋/单元" :disabled="houseTypeDisabled" :options="deptTreeBuilding" v-model="houseInfo.selectOptions"@change="selectedBuildingChanged" :change-on-select="true" style="width:200px"></el-cascader></el-form-item></el-col></el-row><el-row><!-- 此时这个手机号码,默认是不显示的,一旦切换渲染出来,验证规则不做特殊处理就会报错--><div v-if="houseInfo.houseStatus !== 4"><el-row><el-col><el-form-item label="手机号码" prop="landlord.contactMobile" ><el-input v-model="houseInfo.landlord.contactMobile" style="width:200px" placeholder="请输入手机号码"></el-input></el-form-item></el-col></el-row></div>
</el-form>

解决办法:
v-if中的表单元素,使用动态验证规则绑定,:rule=[XXX],同时在method中自定义验证方法即可。

------ 如果文章对你有用,感谢右上角 >>>点赞 | 收藏 <<<

element-ui 表单渲染v-if组件,验证报错相关推荐

  1. vue 3.0记录Element UI 表单使用(看了隔壁小孩儿都会用的Element UI 表单组件使用)

    Element UI 表单 使用 记录 element ui 表单 input 文本域 日期选择 中国标准时间与xxxx-xx-xx格式时间之间的来回切换 中国标准时间转换为xxxx-xx-xx格式 ...

  2. vue+element ui表单校验(邮箱、电话、工商信息)

    vue+element ui表单校验(邮箱.电话.工商信息)) Html部分 <template><div><el-steps :active="active& ...

  3. 关于vue.js element ui 表单验证 this.$refs[formName].validate()的问题

      方法使用前需了解: 来自"和"小编的小提示: 首先打印一下this.$refs[formName],检查是否拿到了正确的需要验证的form. 其次在拿到了正确的form后,检查 ...

  4. element UI 表单自定义验证,css水平且垂直居中方法

    element UI 表单自定义验证 element UI提供了一种内部的表单验证,但是这种方法不能够来进行复杂的验证,如邮箱,手机号等的验证需要用到自定义验证 首先是element UI 提供的基础 ...

  5. form generator ——Element UI表单设计及代码生成器

    form generator Element UI表单设计及代码生成器,可将生成的代码直接运行在基于Element的vue项目中. 网站地址:https://mrhj.gitee.io/form-ge ...

  6. vue开源Element UI表单设计及代码生成器

    1 可视化设计器 设计器基于Element UI ,可通过点击或拖拽的方式设计基本表单, 设计器生成的代码可直接运行在基于 Element 的 vue 项目中. github仓库   https:// ...

  7. element ui 表单验证为正整数

    很多时候都会用表单中输入正整数的情况,在element ui中可以用el-input-number 标签来显示输入框是number类型的,或者type="number"也可以的,但 ...

  8. Element UI——表单验证输入的数字检测出来是string解决方案

    问题描述 打印 判断类型 问题分析 解决方案 数字类型的验证需要在 v-model 处加上 .number 的修饰符,这是 Vue 自身提供的用于将绑定值转化为 number 类型的修饰符. < ...

  9. element ui 表单验证通过后没有绿色框 求解 (已解)

    使用element自带的表单验证. 输入框选中状态边框为蓝色, 输入框输入错误的时候边框为红色, 输入正确的时候边框为绿色. 但是有的时候输入正确没有出现绿色(红色和蓝色状态能正常出现) 我的相关代码 ...

  10. element ui表单验证

    这里通过一个实例来说明表单验证: 如上图所示,我们点击"添加新用户"弹出弹框 这里只讲弹框里面的校验代码: <template><div id="cre ...

最新文章

  1. 「每周CV论文推荐」 初学深度学习活体与伪造人脸检测必读的文章
  2. Linux系统性能监控之6个vmstat和6个iostat命令
  3. PHP中的预定义常量
  4. java 短语_从Java中的文本文件中提取短语
  5. bp配置 sap_SAP转储订单之 STO without delivery
  6. Spring MVC Boot Cloud 技术教程汇总(长期更新)
  7. mysql修改表结构例子_mysql修改表结构方法实例详解
  8. 解决python3缺少zlib的问题
  9. java中常用的IO,你可否分得清、流的分类
  10. c语言玫瑰花图形程序,一个玫瑰花的程序
  11. Spring 3.x 企业应用开发实战(含CD光盘1张)
  12. blob 按换行 分裂_Blob对象介绍
  13. 构造函数强制使用new
  14. ArcGIS Server Help 之 Geodatabase and ArcSDE 学习笔记
  15. 2-10 TreeView 控件
  16. 安装linux没有raid驱动程序,LINUX 无法在 RAID 上安装的问题
  17. jfinal使用配置文件注意事情
  18. autojs自动阅读脚本源代码免费分享
  19. python全套视频免费教程_《python免费视频教程33》 请问谁有靠谱的Python全套视频教程,求推荐分享...
  20. 卡诺模型案例分析_设计师必修课:KANO 模型的讲解与案例分析

热门文章

  1. Prometheus黑盒监测之blackbox_exporter
  2. 欠债还钱、Codeforces Round #637 (Div. 2) -D(多重背包)
  3. ZYNQ——BRAM全双工PS_PL_数据交互
  4. 太牛了,40秒!用Python实现自动扫雷,挑战世界纪录!
  5. Qtum量子链关键技术解读
  6. Linux中vim编辑器基本操作就这么简单
  7. html实现二次密码验证
  8. 前端之样式化链接、web字体
  9. VR晕眩原因及解决方法
  10. 愤怒的美国老铁们,把硅谷的电动滑板车,统统抛进了大海