当前位置: 首页 > news >正文

v-if 导致 elementui 表单校验失效问题解决

问题

在使用 elementui 表单的过程中,某些表单项需要通过 v-if 来判断是否展示,但是这些表单项出现了检验失效的问题。

解决方法

1、给需要 v-if 判断的表单项添加 key 值

<el-form ref="form" :model="form"><el-form-item :key="0" v-if="hasItem" label="名称" prop="type"><el-input v-model="form.name"></el-input></el-form-item><el-form-item :key="1" v-if="hasItem" label="类型" prop="type"><el-input v-model="form.type"></el-input></el-form-item>
</el-form>

2、将校验规则直接绑定在 el-form-item 上

<el-form ref="form" :model="form"><el-form-item :rules="{required: true, message:'请输入名称', trigger: 'change'}"v-if="hasItem" label="名称" prop="name"><el-input v-model="form.name"></el-input></el-form-item><el-form-item :rules="{required: true, message:'请输入类型', trigger: 'change'}"v-if="hasItem" label="类型" prop="type"><el-input v-model="form.type"></el-input></el-form-item>
</el-form>

3、v-show 代替 v-if

这种方法存在一个问题,就是如果 v-if 判断的表单项中如果存在相同字段的项就会导致重复校验的问题,所以这种方法需要在判断的表单项字段都不相同的情况下使用。

<el-form ref="form" :model="form"><el-form-item v-show="hasItem" label="名称" prop="name"><el-input v-model="form.name"></el-input></el-form-item><el-form-item v-show="hasItem" label="类型" prop="type"><el-input v-model="form.type"></el-input></el-form-item>
</el-form>

4、使用自定义校验规则

<el-form ref="form" :model="form"><el-form-item :key="0" v-if="hasItem" label="名称" prop="name"><el-input v-model="form.name"></el-input></el-form-item><el-form-item :key="1" v-if="hasItem" label="类型" prop="type"><el-input v-model="form.type"></el-input></el-form-item>
</el-form>
const checkName = (rule, value, callback) => {if (!value) {return callback(new Error('名称不能为空'));}
}data(){return{rules: {name: [{ validator: checkName , trigger: 'change' }],}}
}
http://www.lryc.cn/news/288092.html

相关文章:

  • Linux本地部署SVN服务结合内网穿透实现远程访问
  • 短信平台(电信)
  • 11.STM32F4 输入捕获
  • opencv#30 线性滤波
  • 如何使用iPhone或iPad上的二维码共享Wi-Fi密码?这里有详细步骤
  • 在游戏里开公司!基于ERNIE SDK的多智能体游戏应用
  • 【SpringCloud Nacos】 微服务治理介绍及Nacos引入初体验
  • JavaEE进阶(6)SpringBoot 配置文件(作用、格式、properties配置文件说明、yml配置文件说明、验证码案例)
  • 面包屑是什么
  • C++ 设计模式之责任链模式
  • HTML5与App封装技术将网站一键打包成App
  • openssl3.2/test/certs - 060 - any.bad.com is excluded by CA2.
  • SpringBoot整理-数据库操作
  • IP被封怎么办?访问网站时IP被阻止?解决IP禁令全方法
  • 利用aiohttp异步爬虫实现网站数据高效抓取
  • navicat连接postgresql、人大金仓等数据库报错
  • AUTOSAR看门狗篇 -看门狗驱动(Wdg)
  • 数字图像处理:图像内插
  • Cantor表(刷题)(C语言)
  • linux install nvm
  • HTML 炫酷进度条
  • Windows10上使Git Bash支持rsync命令操作步骤
  • rust for循环里的所有权 - into_iter / iter / iter_mut
  • GitHub README-Template.md - README.md 模板
  • 【文本到上下文 #6】Word2Vec、GloVe 和 FastText
  • yolov5 opencv dnn部署自己的模型
  • Cortex-M4处理器 电源管理
  • Linux 驱动开发基础知识——编写LED驱动程序(三)
  • YOLOv8 视频识别
  • elementplus Dialog 对话框设置距离页面顶部的距离