Element UI 表单验证规则动态失效问题

news2025/5/25 6:33:26

Element 版本:v2.15.3

问题背景

如下代码所示:有一个上传文件的 input 组件,在更新的时候,如果不上传文件表示不更新,如果要更新则点击 「重新上传」按钮将上传组件显示出来

<el-form ref="form" :model="form" :rules="rules" label-width="80px">
  <!-- 这个字段不是必须的没有写 prop -->
  <el-form-item v-if="!updateDocument" label="文档">
    <el-button @click="updateDocument = true">重新上传</el-button>
    <base-tips margin-left="15px">如需变更请重新上传文档</base-tips>
  </el-form-item>
  <!-- 要更新的话:这个字段要求必须,写 prop  -->
  <el-form-item v-if="updateDocument" label="文档" prop="document">
    <input
           :accept="supportFilesType"
           ref="documentFile" type="file" @change="documentFileChange"/>
  </el-form-item>
</el-form>

在这里插入图片描述
也就是如上图:不更新的话,该字段不是必须的,提交的时候就不会被校验,如果更新的话,就要让这个字段为必填项。

上述代码:从页面上看是正常的,有前面那个红色的 * 号,但是在提交的时候,并没有触发验证。

解决方案

首先:查看表单组件的信息,最终在 Field 这个属性下发现了问题

console.log(this.$refs.form)
  1. 进入页面的时候,Field 中显示的字段数量不包含 document,因为进入页面默认是不更新
  2. 切换到更新状态,Field 中的字段数量并没有变更,那么问题就出现在这里了

这种情况的最主要原因是:表单组件没有触发重新渲染,解决方案靠谱的有:

  1. 在 el-form-item 上增加 key 属性,也就是 vue 中的 key
  2. 在 el-form-item 上手动写上指定的,rules
<!-- 写上 prop,并且手动指定 rules,由于需要不校验该字段,设置一个规则 required:false  -->
<el-form-item v-if="!updateDocument" label="文档" prop="document" :rules="[{required:false}]">
  <el-button @click="updateDocument = true">重新上传</el-button>
  <base-tips margin-left="15px">如需变更合同请重新上传文档</base-tips>
</el-form-item>

<!-- 写上 prop,由于需要验证该字段,直接指向原来的 rules 中的规则-->
<el-form-item v-if="updateDocument" label="文档" prop="document" :rules="rules.document">
  <input
         :accept="supportFilesType"
         ref="documentFile" type="file" @change="documentFileChange"/>
</el-form-item>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1010591.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机网络:三次握手与四次挥手

摘取作者&#xff1a;拓跋阿秀 三次握手 三次握手&#xff08;Three-way Handshake&#xff09;其实就是指建立一个TCP连接时&#xff0c;需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后…

用于人类复杂疾病成药性评估的R包:DREAM包

已获批药物开发新适应症时&#xff0c;需要对所研究的疾病进行彻底的成药性评估。先前成药性主要通过三种不同的方法进行评估&#xff0c;第一种方法基于公共存数据&#xff0c;关注不同治疗条件下药物的作用机制&#xff08;MOA&#xff09;&#xff1b;第二种是基于网络&…

WEB漏洞原理之---【XMLXXE利用检测绕过】

文章目录 1、概述1.1、XML概念1.2、XML与HTML的主要差异1.3、XML代码示例 2、靶场演示2.1、Pikachu靶场--XML数据传输测试玩法-1-读取文件玩法-2-内网探针或攻击内网应用&#xff08;触发漏洞地址&#xff09;玩法-3-RCE引入外部实体DTD无回显-读取文件开启phpstudy--apache日志…

一文弄懂基于图搜索的路径规划算法JPS(有python代码)

基于图搜索路径规划-JPS 关注晓理紫并回复jps获取代码 [晓理紫] 1、 Jump Point Search&#xff08;跳点搜索&#xff09; 核心&#xff1a;寻找到规划中的对称性 Path 并打破他们&#xff0c;从而避免扩展大量无用节点。 A*搜索的节点JPS 搜索的节点 1.1 概念 强迫邻居 节点…

【深度学习】 Python 和 NumPy 系列教程(十八):Matplotlib详解:2、3d绘图类型(4)3D曲面图(3D Surface Plot)

目录 一、前言 二、实验环境 三、Matplotlib详解 1、2d绘图类型 2、3d绘图类型 0. 设置中文字体 1. 3D线框图&#xff08;3D Line Plot&#xff09; 2. 3D散点图&#xff08;3D Scatter Plot&#xff09; 3. 3D条形图&#xff08;3D Bar Plot&#xff09; 4. 3D曲面图…

Copymonkey:AI生成营销广告文案

【产品介绍】 CopyMonkey.ai 是一家成立于2021年的创新型人工智能&#xff08;AI&#xff09;初创企业&#xff0c;专注于开发一款强大的AI写作助手。我们的产品旨在帮助用户以更高效且更自然的方式创作各种文本内容&#xff0c;无论是文章、博客、电子邮件、简历还是其他类型的…

ARM核心时间线

指令集架构处理器家族(ARM RISC)ARMv1ARM1ARMv2ARM2、ARM3ARMv3ARM6、ARM7ARMv4StrongARM、ARM7TDMI、ARM9TDMIARMv5ARM7EJ、ARM9E、ARM10E、XScaleARMv6ARM11、ARM Cortex-MARMv7ARM Cortex-A、ARM Cortex-M、ARM Cortex-RARMv8-A armv8.2Cortex-A35、Cortex-A50系列[18]、Cor…

华为云云耀云服务器L实例评测|在Docker环境下部署ZPan个人网盘系统

华为云云耀云服务器L实例评测&#xff5c;在Docker环境下部署ZPan个人网盘系统 一、云耀云服务器L实例介绍1.1 云耀云服务器L实例简介1.2 云耀云服务器L实例特点 二、ZPan介绍2.1 ZPan简介2.2 ZPan特点 三、华为对象存储服务OBS介绍3.1 华为OBS介绍3.2 华为OBS应用场景 四、本次…

部分依赖图(Partial Dependence Plots)以及实战-疾病引起原因解释

接上篇&#xff0c;特征重要性解释 特征重要性展示了每个特征发挥的作用情况&#xff0c;partial dependence plots可以展示一个特征怎样影响的了预测结果。 前提同样是应用在模型建立完成后进行使用&#xff0c;概述如下&#xff1a; 首先选中一个样本数据&#xff0c;此时想…

企业级镜像仓库Harbor的安装与配置

企业级镜像仓库Harbor的安装与配置 HarborHarbor概述安装Harbor配置 Harbor运行安装程序脚本登录启动与停止Harbor 登录Harbor仓库登录异常解决方案登录退出 推送拉取Harbor镜像镜像命名规范创建项目推送镜像拉取镜像 Harbor Harbor概述 Harbor是一个开源的容器镜像仓库管理系…

零售超市如何应对消费者需求?非常全面!

随着科技的飞速发展和消费者期望的不断演变&#xff0c;零售行业正经历着一场深刻的革命。传统零售模式逐渐被新零售模式所取代&#xff0c;而其中一个备受关注的元素是自动售货机。 自动售货机不仅在商场、车站和办公楼等高流量地点迅速扩张&#xff0c;还在重新定义我们如何购…

日志平台搭建第七章:Linux安装kafka-manager

相关链接https://github.com/yahoo/kafka-manager/releases kafka-manager-2.0.0.2下载地址 百度云链接&#xff1a;https://pan.baidu.com/s/1XinGcwpXU9YBF46qkrKS_A 提取码&#xff1a;tzvg 一、安装部署 1.把kafka-manager-2.0.0.2.zip拷贝到目录 /opt/app/elk 2.解压…

VSD Viewer 6.16.1(Visio绘图文件阅读器)

VSD Viewer是一款用于查看和打开Microsoft Visio文件的应用程序。Visio是一种流程图和图表设计工具&#xff0c;常用于创建各种类型的图形和图表&#xff0c;如组织结构图、流程图、网络拓扑图等。 VSD Viewer允许用户在没有安装Visio软件的情况下浏览和查看Visio文件。它提供…

变频器频率传感器信号转电压或电流信号隔离变送器0-1KHz / 0-5KHz / 0-10KHz转0-5V/0-10V/0-10mA/4-20mA

主要特性 精度等级&#xff1a;0.2 级全量程内极高的线性度&#xff08;非线性度<0.1%&#xff09;辅助电源/信号输入/信号输出&#xff1a; 2500VDC 三隔离辅助电源&#xff1a;5VDC&#xff0c;12VDC&#xff0c;24VDC 等单电源供电输入频率信号&#xff1a;0-1KHz / 0-5…

openGauss学习笔记-69 openGauss 数据库管理-创建和管理普通表-更新表中数据

文章目录 openGauss学习笔记-69 openGauss 数据库管理-创建和管理普通表-更新表中数据 openGauss学习笔记-69 openGauss 数据库管理-创建和管理普通表-更新表中数据 修改已经存储在数据库中数据的行为叫做更新。用户可以更新单独一行、所有行或者指定的部分行。还可以独立更新…

C++(Qt)软件调试---GCC编译参数学习-程序检测(13)

C(Qt)软件调试—GCC编译参数学习-程序检测&#xff08;13&#xff09; 文章目录 C(Qt)软件调试---GCC编译参数学习-程序检测&#xff08;13&#xff09;1、前言1.1 概述1.2 测试环境 2、GCC编译警告选项1.1 编译警告的作用1.2 GCC常用的编译警告选项 3、GCC程序检测选项1.1 性能…

解决Agora声网音视频在后台没有声音的问题

前言:本文会介绍 Android 与 iOS 两个平台的处理方式 一、Android高版本在应用退到后台时,系统为了省电会限制应用的后台活动,因此我们需要开启一个前台服务,在前台服务中发送常驻任务栏通知,以此来保证App 退到后台时不会被限制活动. 前台服务代码如下: package com.notify…

在ubuntu安装vncserver,可以打开远程桌面

1.网上查找vncserver的资料 2.在ubuntu20.04上面使用 https://www.5axxw.com/questions/simple/ywnpl5 参考了这个和其他很多 我直接运行vncserver&#xff0c;没有成功&#xff01; 当我使用这个命令时 xtigervncviewer -SecurityTypes VncAuth -passwd /home/yx/.vnc/passw…

构建高效的接口自动化测试框架思路

在选择接口测试自动化框架时&#xff0c;需要根据团队的技术栈和项目需求来综合考虑。对于测试团队来说&#xff0c;使用Python相关的测试框架更为便捷。无论选择哪种框架&#xff0c;重要的是确保 框架功能完备&#xff0c;易于维护和扩展&#xff0c;提高测试效率和准确性。今…

Biome-BGC生态系统模型与Python融合技术教程

详情点击公众号链接&#xff1a;Biome-BGC生态系统模型与Python融合技术教程 前言 Biome-BGC是利用站点描述数据、气象数据和植被生理生态参数&#xff0c;模拟日尺度碳、水和氮通量的有效模型&#xff0c;其研究的空间尺度可以从点尺度扩展到陆地生态系统。 在Biome-BGC模型…