el-form表单全部/部分添加一样字段内容并表单校验(复制即可实现)

news2024/9/28 3:30:37

需求:表单有俩个按钮,一个是全部添加,一个是部分添加默认如下:

 点击添加饮品爱好后如下,可以添加多个

点击添加全部,并且点击提交按钮后的表单校验,如下图:

 全部代码如下,可自行复制查看

<template>
    <!-- 全部添加和部分添加 -->
    <div class="content-box">
        <div class="container">
            <p>主题页面 1 - 1</p>
            <el-row>
                <el-col :span="9">
                    <div class="table-container">
                        <el-form ref="form" :model="form1" label-width="100px">
                            <div v-for="(item, index) in form1.items" :key="index">
                                <el-form-item
                                    label="姓名"
                                    :prop="'items.' + index + '.name'"
                                    :rules="{ required: true, message: '姓名不能为空', trigger: 'blur' }"
                                >
                                    <el-input v-model="item.name"></el-input>
                                </el-form-item>
                                <el-form-item
                                    label="年龄"
                                    :prop="'items.' + index + '.age'"
                                    :rules="{ required: true, message: '年龄不能为空', trigger: 'blur' }"
                                >
                                    <el-input v-model="item.age"></el-input>
                                </el-form-item>
                                <div v-for="(text, i) in item.itemall" :key="i">
                                    <el-form-item
                                        label="饮品---"
                                        :prop="'items.' + index + '.itemall.' + i + '.drink'"
                                        :rules="{ required: true, message: '饮品不能为空', trigger: 'blur' }"
                                    >
                                        <el-input v-model="text.drink"></el-input>
                                    </el-form-item>
                                    <el-form-item
                                        label="爱好---"
                                        :prop="'items.' + index + '.itemall.' + i + '.hobby'"
                                        :rules="{ required: true, message: '爱好不能为空', trigger: 'blur' }"
                                    >
                                        <el-input v-model="text.hobby"></el-input>
                                    </el-form-item>
                                </div>
                                <el-form-item>
                                    <el-button type="primary" @click="addItem(index)">添加饮品爱好</el-button>
                                </el-form-item>
                            </div>
                            <el-form-item>
                                <template>
                                    <el-button type="primary" @click="addAll">添加全部</el-button>
                                    <el-button type="primary" @click="submitForm">提交</el-button>
                                </template>
                            </el-form-item>
                        </el-form>
                    </div>
                </el-col>
            </el-row>

            <div class="pagination-area"></div>
        </div>
    </div>
</template>

<script>
import { testApi } from '@/api/test';

const defaultListQuery = {
    pageNum: 1,
    pageSize: 10,
    keyword: ''
};

export default {
    data() {
        return {
            form1: {
                items: [
                    {
                        name: '',
                        age: '',
                        itemall: [{ drink: '', hobby: '' }]
                    }
                    // { name: '', itemall: [{ sexs: '', age: '' }] }
                ]
            },
            form: {
                name: '',
                age: '',
                items: [{ sex: '', hobby: '' }]
            },
            argList: []
        };
    },
    created() {},
    methods: {
        // 添加表单内容操作
        addItem(index) {
            console.log(index);
            this.form1.items[index].itemall.push({
                drink: '',
                hobby: ''
            });
        },
        // 提交做校验
        submitForm() {
            this.$refs.form.validate((valid) => {
                if (valid) {

                    console.log(this.form1, '数据结构');
                } else {
                    console.log('表单验证失败');
                }
            });
        },
        addAll() {
            this.form1.items.push({
                name: '',
                age: '',
                itemall: [{ drink: '', hobby: '' }]
            });
        }
    }
};
</script>

 得到的数据结构如下图,不会影响,都是单独的表单验证:

 这样就实现啦,文章到此结束,希望对你有所帮助~~

 

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

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

相关文章

Linux 6.3更新补丁修复XFS元数据损坏的问题

导读一些 XFS 用户曾反馈&#xff0c;在升级到最新的 Linux 6.3.3 point releases 之后&#xff0c;出现了元数据损坏的问题。 一些 XFS 用户曾反馈&#xff0c;在升级到最新的 Linux 6.3.3 point releases 之后&#xff0c;出现了元数据损坏的问题。对此&#xff0c;内核开发…

Electron 进程间通信的实现

electron Electron 进程间通信的实现 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.net/qq_28550263/article/details/131136140 【介绍】…

【LeetCode】HOT 100(9)

题单介绍&#xff1a; 精选 100 道力扣&#xff08;LeetCode&#xff09;上最热门的题目&#xff0c;适合初识算法与数据结构的新手和想要在短时间内高效提升的人&#xff0c;熟练掌握这 100 道题&#xff0c;你就已经具备了在代码世界通行的基本能力。 目录 题单介绍&#…

一款开源、免费的微信管家系统,助你快速搭建微信应用

JeewxBoot是一款免费的JAVA微信管家平台&#xff0c;支持微信公众号、小程序、微信第三方平台、抽奖活动等。JeewxBoot已经实现了系统权限管理、公众号管理、抽奖活动等基础功能&#xff0c;便于二次开发&#xff0c;可以快速搭建微信应用&#xff01; 技术架构&#xff1a;Sp…

代码随想录|day13| 栈与队列part03 ● 239. 滑动窗口最大值● 347.前 K 个高频元素● 总结

239. 滑动窗口最大值--------知识点&#xff1a;单调队列 链接&#xff1a;代码随想录 自己写的&#xff0c;报错&#xff1a; class DandiaoQueue{//一个栈或者队列&#xff0c;基本要有进栈出栈两种操作&#xff0c;这里再加上pop出最大值一种操作//底层是deque public:deque…

网络工程师怎么入门?

首先&#xff0c;要成为一名牛逼的网络工程师&#xff0c;就得有扎实的技术功底。毕竟&#xff0c;技术是王道嘛&#xff01;从最基础的TCP/IP、DNS开始学起&#xff0c;这是咱们的入门基石。当然&#xff0c;也别忘了学习一些常见的编程语言&#xff0c;比如Python、Java等等。…

java -jar 参数传递

前景: 我看spring boot启动时,当指定某个profile的时候,是直接使用 --spring.profiles.active 但是我之前传递参数是使用的是-DpathD:\\ 这样写的,所以我就好奇两种传递参数的区别 可以通过两种方式,下面说说他们的区别 当我们在idea里面指定的时候,就可以看出两者是不同的…

Spring架构篇--2.7.5 远程通信基础--Netty原理write 事件处理

前言&#xff1a;之前的分析中我们知道了服务端对于客户端accept 以及read 事件的处理&#xff0c;那么客户端/服务端 进行数据写入时 数据流又是怎么传递的&#xff0c;本文继续对 write 探究&#xff1b; 1 Netty 服务端 数据如何写出&#xff1a; 通常我们使用SocketChann…

软件自动化测试

测试的目的&#xff1a; 保证软件质量 第一章 JMock测试框架 1.1 简介 Mock测试是一种常见的测试方法&#xff0c;通常在执行测试的时候&#xff0c;测试代码往往需要与一些真实对象进行交互&#xff0c;又或者被测代码的执行需要依赖真实对象的功能。此时&#xff0c;我们可…

【网络】定制协议版本的网络计算器

文章目录 什么是协议结构化数据的传输序列化和反序列化如何进行序列化和反序列化-jsoncpp使用示例 实现网络版本的计算器协议定制序列化和反序列化函数封装Protocol.hpp 对套接字接口进行封装版本1:原始版本-无序列化和反序列化(多线程版本)Makefile服务端客户端 版本2:进行序列…

算法模板(7):计算几何(1)

计算几何 基础知识 y总总结知识点 1. 前置知识点(1) pi acos(-1);(2) 余弦定理 c^2 a^2 b^2 - 2abcos(t)2. 浮点数的比较 const double eps 1e-8; int sign(double x) // 符号函数 {if (fabs(x) < eps) return 0;if (x < 0) return -1;return 1; } int cmp(doubl…

【通用方法】返回近 dayNum 天日期数组封装方法

代码如下 // 返回近 dayNum 天日期数组 getRecentDay(dayNum) {let currentDate new Date();let dayNumDaysAgo new Date(currentDate.getTime() - dayNum * 24 * 60 * 60 * 1000);let recentDays [];for (let i 0; i < dayNum; i) {let date new Date(dayNumDaysAgo.g…

3U VPX XC7VX690T计算处理板

3U VPX 计算处理 板卡外观&#xff1a; 板载FPGA介绍&#xff1a;XC7VX690TT-2FFG1761i 同Xilinx公司的Kintex-7 FPGA系列比起来&#xff0c;Virtex-7系列有更高的性能。国内应用相当广泛。 Virtex-7 Family: Optimized for highest system performance and capacity with a 2X…

OpenCV如何确认是否使用了libjpg-turbo

项目中使用了图片解码的功能&#xff0c;目前使用的是OpenCV里头的libjpg&#xff0c;但是我们可以把 libjpg-turbo li编译到OpenCV中来提高解码效率&#xff0c;据官网说可以提高2-6的效率&#xff1a; 1、使用cv::getBuildInformation()可以看到构建参数。 2、本地构建完成之…

华为交换机观察口(observe-port)配置

镜像是指将经过指定端口&#xff08;源端口或者镜像端口&#xff09;的报文复制一份到另一个指定端口&#xff08;目的端口或者观察端口&#xff09;。 镜像可以在不影响设备对报文进行正常处理的情况下&#xff0c;将镜像端口的报文复制一份到观察端口。 端口镜像是指设备复制…

vscode连接远程服务器出现XHR faild

参考&#xff1a;https://zhuanlan.zhihu.com/p/426876766 1、出现XHR Faild&#xff0c;仔细查看是dowloading vscode-server to host错误&#xff0c;说明在下载vscode-server包出错&#xff0c;可以利用以下方法&#xff0c;手动下载: https://vscode.cdn.azure.cn/stable…

Debezium UI On ECS编译安装及开放Web访问

1. 访问debezium-ui的代码仓库&#xff0c;下载源码 GitHub - debezium/debezium-ui: A web UI for Debezium; Please log issues at https://issues.redhat.com/browse/DBZ. 2. 解压zip源码包&#xff1a; TEST[hadoopshdcvfsla1894 ~]$ cd /data/module TEST[hadoopshd…

Linux防火墙学习笔记6

制定iptables规则策略&#xff1a; 黑名单&#xff1a; 没有被拒绝的流量都可以通过&#xff0c;这种策略下管理员必须针对每一种新出现的攻击&#xff0c;制定新的规则&#xff0c;因此不推荐。 白名单&#xff1a; 没有被允许的流量都要被拒绝&#xff0c;这种策略比较保…

35岁找工作,这个最重要

最近一些35岁左右的中年失业朋友找我聊&#xff0c;我发现他们找工作的方式和年轻人并没有什么不同&#xff0c;还是通过网络APP进行海投。 如果你刚开始工作的时候&#xff0c;通过这种方式去找工作&#xff0c;无可厚非&#xff0c;但如果工作很久了&#xff0c;还通过这种方…

r2pm -ci r2ghidra 时报错:checking pkg-config flags for r_core... no

参考网址&#xff1a; sys/python.sh fails with checking pkg-config flags for r_core... no Issue #1943 radareorg/radare2 GitHub 进入目录/root/.local/share/radare2/r2pm/git/r2ghidra查看configure文件&#xff0c;查找报错位置 执行指令 &#xff1a; # pkg-co…