element-ui 表单渲染v-if组件,验证报错
问题描述
使用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组件,验证报错相关推荐
- vue 3.0记录Element UI 表单使用(看了隔壁小孩儿都会用的Element UI 表单组件使用)
Element UI 表单 使用 记录 element ui 表单 input 文本域 日期选择 中国标准时间与xxxx-xx-xx格式时间之间的来回切换 中国标准时间转换为xxxx-xx-xx格式 ...
- vue+element ui表单校验(邮箱、电话、工商信息)
vue+element ui表单校验(邮箱.电话.工商信息)) Html部分 <template><div><el-steps :active="active& ...
- 关于vue.js element ui 表单验证 this.$refs[formName].validate()的问题
方法使用前需了解: 来自"和"小编的小提示: 首先打印一下this.$refs[formName],检查是否拿到了正确的需要验证的form. 其次在拿到了正确的form后,检查 ...
- element UI 表单自定义验证,css水平且垂直居中方法
element UI 表单自定义验证 element UI提供了一种内部的表单验证,但是这种方法不能够来进行复杂的验证,如邮箱,手机号等的验证需要用到自定义验证 首先是element UI 提供的基础 ...
- form generator ——Element UI表单设计及代码生成器
form generator Element UI表单设计及代码生成器,可将生成的代码直接运行在基于Element的vue项目中. 网站地址:https://mrhj.gitee.io/form-ge ...
- vue开源Element UI表单设计及代码生成器
1 可视化设计器 设计器基于Element UI ,可通过点击或拖拽的方式设计基本表单, 设计器生成的代码可直接运行在基于 Element 的 vue 项目中. github仓库 https:// ...
- element ui 表单验证为正整数
很多时候都会用表单中输入正整数的情况,在element ui中可以用el-input-number 标签来显示输入框是number类型的,或者type="number"也可以的,但 ...
- Element UI——表单验证输入的数字检测出来是string解决方案
问题描述 打印 判断类型 问题分析 解决方案 数字类型的验证需要在 v-model 处加上 .number 的修饰符,这是 Vue 自身提供的用于将绑定值转化为 number 类型的修饰符. < ...
- element ui 表单验证通过后没有绿色框 求解 (已解)
使用element自带的表单验证. 输入框选中状态边框为蓝色, 输入框输入错误的时候边框为红色, 输入正确的时候边框为绿色. 但是有的时候输入正确没有出现绿色(红色和蓝色状态能正常出现) 我的相关代码 ...
- element ui表单验证
这里通过一个实例来说明表单验证: 如上图所示,我们点击"添加新用户"弹出弹框 这里只讲弹框里面的校验代码: <template><div id="cre ...
最新文章
- 「每周CV论文推荐」 初学深度学习活体与伪造人脸检测必读的文章
- Linux系统性能监控之6个vmstat和6个iostat命令
- PHP中的预定义常量
- java 短语_从Java中的文本文件中提取短语
- bp配置 sap_SAP转储订单之 STO without delivery
- Spring MVC Boot Cloud 技术教程汇总(长期更新)
- mysql修改表结构例子_mysql修改表结构方法实例详解
- 解决python3缺少zlib的问题
- java中常用的IO,你可否分得清、流的分类
- c语言玫瑰花图形程序,一个玫瑰花的程序
- Spring 3.x 企业应用开发实战(含CD光盘1张)
- blob 按换行 分裂_Blob对象介绍
- 构造函数强制使用new
- ArcGIS Server Help 之 Geodatabase and ArcSDE 学习笔记
- 2-10 TreeView 控件
- 安装linux没有raid驱动程序,LINUX 无法在 RAID 上安装的问题
- jfinal使用配置文件注意事情
- autojs自动阅读脚本源代码免费分享
- python全套视频免费教程_《python免费视频教程33》 请问谁有靠谱的Python全套视频教程,求推荐分享...
- 卡诺模型案例分析_设计师必修课:KANO 模型的讲解与案例分析