vue3 +element-plus中避免一打开表单的下拉选择的change事件自动校验问题

news2024/12/26 12:07:03

背景:新增和编辑共用一个弹窗时,每次打开新增弹窗,el-select的表单项会触发change事件的自动校验。我这里的下拉选择是支持多选的,也就是属性上有multiple
在这里插入图片描述

以下解决方法,亲测有用!!

1. 该表单项设置初始值为空数组,每次打开表单在nextTick中重置表单项

const showEditDialog = async (type: 'add' | 'mod', row?) => {
  await getInterfaceList();
    nextTick(() => {
    ruleFormRef?.value?.resetFields();
  })
  state.editType = type;
  if (type === 'add') {
    state.dialogTitle = '添加策略配置';
  } else {
    state.dialogTitle = '编辑策略配置';
    state.ruleForm = _.cloneDeep(row);//防止编辑时的表单影响这行表格数据
    state.oldCode = row.code;
  }
};

2. 关闭弹窗使用 close事件,手动重置表单项

注意:不要使用destroy-on-close,不然会第二次打开表单时,上回的值还存在。

<el-drawer v-model="visible" :title="state.dialogTitle" direction="rtl" size="400px" :close-on-click-modal="false"
  @close="handleClose">
  ...
 </el-drawer>   
const handleClose = () => {
  visible.value = false;
  ruleFormRef.value?.resetFields();// 只会重置必填项表单项(el-form-item有prop那个),并移除校验结果
  state.ruleForm = {} as api.StrategyConfForm;//让非必填项也清空
}

之前导致问题的错误写法:

<el-drawer v-model="visible" :title="state.dialogTitle" direction="rtl" size="400px" :close-on-click-modal="false"
  destroy-on-close>
   ...
 </el-drawer>   
const showEditDialog = async (type: 'add' | 'mod', row?) => {
  ruleFormRef.value?.resetFields();
  await getInterfaceList();
  state.ruleForm = {} as api.StrategyConfForm;
  state.editType = type;
  if (type === 'add') {
    state.dialogTitle = '添加策略配置';
  } else {
    state.dialogTitle = '编辑策略配置';
    state.ruleForm = _.cloneDeep(row);
    state.oldCode = row.code;
  }
};

出现问题的原因:

每次打开弹窗时将整个表单项设为空对象,el-select那一个表单项没有给初始值为空数值,所以会检测到这项是为空的,触发change事件校验。
改了下,这样也是可以的,关闭时再使用 close事件,手动重置表单项。

const showEditDialog = async (type: 'add' | 'mod', row?) => {
  await getInterfaceList();
  state.ruleForm = {} as api.StrategyConfForm;
 state.ruleForm.interfaceIds = [];//这里要给它设置初始值为空数组,不然会触发change事件校验
  state.editType = type;
  if (type === 'add') {
    state.dialogTitle = '添加策略配置';
  } else {
    state.dialogTitle = '编辑策略配置';
    state.ruleForm = _.cloneDeep(row);
    state.oldCode = row.code;
  }
};

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

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

相关文章

【运维】hadoop3.0.3集群安装(一)多节点安装

文章目录 一.Purpose二. Prerequisites三. Installation1. 节点规划2. Configuring Hadoop in Non-Secure Mode3. 准备工作4. 配置core-site.xmlhdfs-site.xmlyarn-site.xmlmapred-site.xmlworkers 4. 分发配置、创建文件夹5. 格式化6. 操作进程6.1. hdfs启动停止 6.2. yarn启动…

华为Mate60 麒麟5G归来,B站都燃了

8月29日&#xff0c;B站华为官方号“华为终端”&#xff0c;发布作品《【HUAWEI Mate 60系列】致敬奔腾不息的力量》公布了华为Mate 60系列产品面世。 该作品一经发布后&#xff0c;一小时最高能增长45.1万的播放量&#xff0c;截至目前发布两日播放量已经高达316.9万&#xf…

关于vue3组合式api (父组件和子组件之间的数据传递)笔记

目录 1.父组件转子组件 2.子组件传父组件 1.父组件转子组件 直接上代码 运行结果 2.子组件传父组件 子组件向父组件传递数据较为复杂一些&#xff0c;需要加深理解才可以明白&#xff01;我是这样理解的 父组件先写一个带参的函数&#xff0c;然后再将函数传给子组件&#xf…

Acwing793. 高精度乘法

Acwing793. 高精度乘法 题目描述代码展示 题目描述 代码展示 #include <iostream> #include <vector>using namespace std;vector<int> mul(vector<int> &A, int b) {vector<int> C;int t 0;for (int i 0; i < A.size() || t; i ){if…

一文通关MyBatisPlus

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; MyBatis ✨特色专栏&#xff1a; MySQ…

ssm园区停车管理系统源码和论文

ssm园区停车管理系统源码和论文104 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#x…

keytool生成证书

配置jdk 下载jdk https://www.oracle.com/java/technologies/downloads/#java8-linux 解压文件 tar -xvf jdk-8u381-linux-x64.tar.gz配置环境变量 export PATH$PATH:/root/jdk1.8.0_381/bin注意&#xff1a;此处仅配置了建议环境变量&#xff0c;若需要配置jdk完整环境变量&…

Blender 围绕自身的原点旋转与游标旋转

默认情况下的旋转是&#xff0c;R后旋转是物体自身的原点旋转 可以修改为围绕游标旋转&#xff0c;通过旋转R时 局部与全局坐标 全局的坐标不会变 局部的会随着物体的旋转变化 如果平稳时GZZ会在全局到局部坐标之间切换 或在局部到全局之间的切换 学习视频&#xff1a;【基础…

OCR文字检测与识别系统:融合文字检测、文字识别和方向分类器的综合解决方案

1. PP-OCR系统简介与总览 前两章主要介绍了DBNet文字检测算法以及CRNN文字识别算法。然而对于我们实际场景中的一张图像&#xff0c;想要单独基于文字检测或者识别模型&#xff0c;是无法同时获取文字位置与文字内容的&#xff0c;因此&#xff0c;我们将文字检测算法以及文字…

算法通关村第9关【黄金】| 两道有挑战的问题

1. 将有序数组转换为二叉搜索树 思路&#xff1a;二分法&#xff0c;这个算法保证了每次选择的中间元素都能保持左右子树的高度差不超过 1&#xff0c;从而构建一个高度平衡的二叉搜索树。这个过程类似于分治法&#xff0c;通过递归不断将大问题分解成小问题并解决。 找到数组…

和24考研说拜拜,不考研读中外合作办学硕士——人大女王金融硕士

23考研失利同学&#xff0c;大多都会有这样的疑虑&#xff0c;是再试一次还是选择其他方式呢&#xff1f;其实&#xff0c;并不用执着于全国联考&#xff0c;中外合作办学硕士或许更适合你。近年来&#xff0c;经济迅速发展&#xff0c;经济全球化不断扩大&#xff0c;金融方向…

怪兽充电连续两季度盈利,共享充电宝又行了?

智能手机的时代&#xff0c;“电量焦虑”是一个从未得到完美解决的问题。 彼得戴曼迪斯在《创业无畏》中写下&#xff1a;“世界上最大的问题等于最大的商机。” 近期&#xff0c;科技消费公司怪兽充电发布了2023年第二季度业绩报告。根据财报&#xff0c;怪兽充电第二季度实…

云计算中的负载均衡技术,确保资源的平衡分配

文章目录 1. 硬件负载均衡器2. 软件负载均衡器3. DNS负载均衡4. 内容分发网络&#xff08;CDN&#xff09; &#x1f388;个人主页&#xff1a;程序员 小侯 &#x1f390;CSDN新晋作者 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 ✨收录专栏&#xff1a;云计算 ✨文章内…

【锁】定时任务推送数据-redission加锁实例优化

文章目录 redission 加锁代码-有问题优化代码看门狗是什么&#xff1f; redission 加锁代码-有问题 /*** 收货入库物料标签(包装码)推送接口** throws Exception*/public void synReceiveMaterialTags() throws Exception {String tag DateFormatUtils.format(new Date(), &qu…

操作系统中一些零散的知识点

第三章 内存管理 在虚拟内存系统中&#xff0c;虚拟内存的最大容量是由计算机的地址结构&#xff08;CPU寻址范围&#xff09;确定的&#xff0c;而虚拟内存的实际容量是受到“内存大小磁盘空间大小”、“地址线位数”共同制约&#xff0c;取二者最小值实现虚拟内存管理必须有…

手把手教你实现一个可编辑的Table

手把手教你实现一个可编辑的Table 需求背景 我们最近在做一些商品的备案工作&#xff0c;历史有很多的备案记录&#xff0c;不能很好的利用。所以想做一个提效工具。 备案人员&#xff0c;在网页通过搜索历史知识库的数据&#xff0c;进行备案编辑&#xff0c;他们平时都在使用…

亚马逊美国站上半年“日本商店”畅销品类了解一下吧!

近日&#xff0c;亚马逊美国站公布了2023年上半年“日本商店”&#xff08;JAPAN STORE&#xff09;的热门品类以及各品类销量排名前三的商品。据了解&#xff0c;亚马逊与日本贸易振兴机构 (JETRO) 合作&#xff0c;于2021年11月推出“日本商店”&#xff0c;支持日本卖家出海…

Vue安装过程的困惑解答——nodejs和vue关系、vue的项目结构

文章目录 一、为什么在使用vue前要下载nodejs&#xff1f;二、为什么安装nodejs后就能使用NPM包管理工具&#xff1f;三、为什么是V8引擎并且使用C实现&#xff1f;四、为什么会安装淘宝镜像&#xff1f;五、什么是webpack模板&#xff0c;为什么需要他&#xff1f;六、vue项目…

2023年中国电商销售额将达2.2万亿美元领跑全球

根据Global Data的数据&#xff0c;中国将继续保持在全球电子商务格局中的主导地位。预计中国电子商务市场将增长9.9%&#xff0c;到2023年将增长22亿美元。 2018年至2022年间&#xff0c;中国的在线销售额复合年增长率为11.2%。电商销售额在2022年达到了2万亿美元。预计2023年…

Python 实践之Pandas 时间数据处理方法详解

概要 表格数据中常见的数据类型是数值型&#xff08;包括整数、浮点数&#xff09;和字符型&#xff0c;除了这两种数据&#xff0c;时间类型数据也是常见数据的重要组成部分&#xff0c;同时也是数据分析中极其重要的信息。无论是金融领域的股票交易数据&#xff0c;还是企业注…