Vue3、Element Plus使用v-for循环el-form表单进行校验

devtools/2024/9/23 6:22:34/

在开发中遇到了这样一个需求

有一个form是通过v-for生成出来的,并且数量不确定,每个表单中的字段都需要做校验,就将自己的解决方法记录了下来。

在这里插入图片描述

在这里插入图片描述

完整代码如下

<template><div class="for-form"><el-button type="primary" @click="addHandle">新 增</el-button><div class="form-box"><div class="form-item" v-for="(item, index) in formList" :key="index"><el-form :model="item" :rules="rules" label-width="auto" style="max-width: 300px" label-position="top":ref="($event) => handle($event, index)"><el-form-item label="名称" prop="name"><el-input v-model="item.name" placeholder="请输入名称" /></el-form-item><el-form-item label="手机号" prop="phone"><el-input v-model="item.phone" placeholder="请输入手机号" /></el-form-item><el-form-item label="性别" prop="sex"><el-radio-group v-model="item.sex"><el-radio :value="1" size="small"></el-radio><el-radio :value="2" size="small"></el-radio></el-radio-group></el-form-item><el-form-item label="爱好" prop="hobby" v-if="item.sex == 2"><el-input v-model="item.hobby" placeholder="请输入爱好" /></el-form-item></el-form></div></div><el-button type="primary" @click="saveHandle">保 存</el-button></div>
</template><script setup lang="ts">
import { reactive, toRefs } from 'vue'const state = reactive({form: {} as any,formList: [] as any,rules: {name: [{ required: true, message: 'Please input Activity name', trigger: 'blur' },],},formRefs: [] as any
})const { formList, rules } = toRefs(state)function addHandle() {state.formList.push({name: "",phone: "",sex: 1,hobby: "",})
}function handle(e: any, index: any) {// 保存下每个refstate.formRefs[index] = e
}async function saveHandle() {let isSubmit: boolean[] = []// 循环上面记录下来的ref对每个进行校验for (const el of state.formRefs) {await el.validate((valid: any) => {// 每个 ref 校验成功或者失败都以布尔值存储下来if (valid) {isSubmit.push(true)} else {isSubmit.push(false)}})}// 只有当 isSubmit 存的值全是 true 时表示每个表单都校验成功了// 然后就可以提交了let has = isSubmit.every(i => i == true)if (has) {console.log("可以提交")}console.log(state.formRefs)console.log(isSubmit)
}</script><style scoped lang="scss">
.form-box {display: flex;align-items: flex-start;.form-item {margin-right: 20px;}
}
</style>

http://www.ppmy.cn/devtools/53571.html

相关文章

Windows10 利用QT搭建SOEM开发环境

文章目录 一. SOEM库简介二. 安装WinPcap三. SOEM(1.4)库安装(1) 编译32位库(2) 编译64位库 四. 运行SOEM示例代码五. WIN10下利用QT构建SOEM开发环境 一. SOEM库简介 SOEM&#xff08;Scalable Open EtherCAT Master 或 Simple Open EtherCAT Master&#xff09;是一个开源的…

钡铼BL102应用智能电网配电柜PLC转MQTT无线接云服务

在当今智能电网的发展浪潮中&#xff0c;配电系统的智能化升级是提升电网效率与稳定性的重要环节。随着物联网技术的飞速发展&#xff0c;实现配电柜的远程监控与管理成为了可能&#xff0c;而这一转变的关键在于如何有效地将传统配电柜中的PLC数据接入到云端进行分析与处理。 …

skywalking9.4 链路追踪

下载&#xff0c;很慢很慢很慢&#xff01;&#xff01;&#xff01;&#xff01; jdk 使用jdk17 skywalking-apm 9.4 java-agent 9.0 idea 本地开发配置 第1行配置按实际来&#xff1b; 第2行自定义&#xff0c;一般和微服务名称相同&#xff1b; 第3行ip写安装的机器ip,端…

基于C#开发web网页管理系统模板流程-总集篇

第一篇 基于C#开发web网页管理系统模板流程-登录界面和主界面_c#的网页编程-CSDN博客 第二篇 基于C#开发web网页管理系统模板流程-主界面管理员录入和编辑功能完善_c#网页设计-CSDN博客 第三篇 基于C#开发web网页管理系统模板流程-主界面管理员入库和出库功能完善_c#web程序设计…

【后端开发】服务开发场景之高可用(冗余设计,服务限流,降级熔断,超时重试,性能测试)

【后端开发】服务开发场景之高可用&#xff08;冗余设计&#xff0c;服务限流&#xff0c;降级熔断&#xff0c;超时重试&#xff0c;性能测试&#xff09; 文章目录 序&#xff1a;如何设计一个高可用的系统&#xff1f;可用性的判断指标是什么&#xff1f;哪些情况会导致系统…

【机器学习】基于RoBERTa模型的句子嵌入实践

1.引言 1.1.RoBERTa模型开发背景 BERT模型自发布以来&#xff0c;就以其卓越的性能和广泛的应用领域&#xff0c;在NLP领域引起了巨大的轰动。BERT通过预训练大量文本数据&#xff0c;学习到了丰富的语言表示&#xff0c;并在多个NLP任务上取得了显著的效果提升。然而&#x…

【源码】校园小情书小程序最新版 校园小程序开发 微信情书小程序 校园小情书小程序源代码

校园小情书微信小程序源码 | 社区小程序前后端开源 | 校园表白墙交友小程序 功能&#xff1a; 表白墙 卖舍友 步数旅行 步数排行榜 情侣脸 漫画脸 个人主页 私信 站内消息 今日话题 评论点赞收藏 服务器环境要求&#xff1a;PHP7.0 MySQL5.7 …

LVS ipvsadm命令的使用(二)

目录 上篇&#xff1a;负载均衡集群&#xff08;一&#xff09;-CSDN博客 命令参数概述 调度算法 基本命令 1. 添加虚拟服务器 2. 添加真实服务器 3. 删除虚拟服务器 4. 删除真实服务器 5. 列出当前配置 6. 修改服务器权重 7.保存规则 8. 清除所有配置 进行增加虚拟…