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

这篇具有很好参考价值的文章主要介绍了el-form表单全部/部分添加一样字段内容并表单校验(复制即可实现)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

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

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

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

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

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

<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>

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

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

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

 文章来源地址https://www.toymoban.com/news/detail-480190.html

到了这里,关于el-form表单全部/部分添加一样字段内容并表单校验(复制即可实现)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 封装通用el-form表单(2种方式)

              项目地址:git clone form-demo: 封装通用el-form         一个后台管理系统最常见的是 表单 ,表单最常见的是 输入框、下拉选择、日期选择、单选、复选框 等等, 系统添加若干模块,就复制粘贴若干个 el-form、el-form-item ,有一说一,完成需求快是快,但是代码冗

    2024年02月09日
    浏览(40)
  • vue3使用el-form实现登录、注册功能,且进行表单验证(Element Plus中的el-form)

    简介:Element Plus 中的 el-form 是一个表单组件,用于快速构建表单并进行数据校验。它提供了丰富的表单元素和验证规则,使表单开发变得更加简单和高效。可以搭配el-dialog实现当前页面的登录、注册页 ,这两天在vue3中用到了表单登录,特意记录一下,这里没有封装,直接使

    2024年02月07日
    浏览(73)
  • el-form表单el-form-item prop一次验证两个值

    1.表单添加两个框,prop写上 2.data里写,验证规则添加validator: this.validateFields 3.validateFields设置

    2024年02月10日
    浏览(43)
  • vue实现多个el-form表单提交统一校验

    通过以下两种方法实现多个表单的统一校验: 1. 定义模板内容 在 el-form 表单中添加 ref 属性来获取表单组件对象 2. 方法一 在上述代码中,我们给每个 el-form 表单添加了 ref 属性,分别为 form1 和 form2,在 submit 方法中,分别对两个表单使用 validate 方法进行表单校验 3. 方法二

    2024年02月13日
    浏览(47)
  • Vue - Element el-form 表单对象多层嵌套校验

    针对el-form的数据源是对象嵌套对象,在进行数据绑定和校验时和单层的对象有一点区别, 具体是下面两部分: 数据源: 1、 给 el-form-item 的 prop 设为: prop=\\\"health.height\\\" 。 v-model 设为: v-model=\\\"fromData.health.height\\\" 2、校验规则 rules 对象对应的key设置为数据源内部的值: \\\'health.heig

    2024年02月14日
    浏览(54)
  • 解决el-form一进页面就会触发表单校验问题

    预期效果是:打开页面,外出地点和其他属性一样,不会自动触发表单非空校验,而是在操作当前属性时触发。 解决思路: 设置初始值为空数组即可 若不是多选,是输入框或者其他就初始化对应的值即可。思路大概是这样~

    2024年02月16日
    浏览(54)
  • el-form 动态表单增减项 (vue+element ui)

    1、点击”+“,弹出弹窗,新增一项,点击”-“,删除当前项 代码展示: html代码: 注意: el-form-item(表单项)循环,绑定的数组写在form当中 表单: 新增参数弹框: data: methods: 1、点击新增,弹出新增弹窗,添加表单项 2、点击”-“,删除当前表单项

    2024年02月02日
    浏览(53)
  • element-plus el-form 表单、表单验证 使用方法、注意事项

    element-plus@2.0.6 及之后的版本,表单验证不再是同步执行的了 另外, element-plus@2.1.4 及之后的版本,才可按照官方文档示例正常使用(使用的是两者的中间版本的话,最好先自行确认下正确的 上例中: 如果在“ 位置1 ”执行表单验证通过后的业务代码,可以去掉 async...await 如

    2024年02月05日
    浏览(63)
  • Vue+Element-UI el-form表单动态检验

    业务需求: 表单el-form 有一表单项:发布时间 ,有5个选项:今天、24小时、近3天、近7天和自定义时间,其中当选择自定义时间时,后面跟着的日期时间选择器是必填的,选中其他选项时则不需要。这就需要做到表单的动态检验。 最开始实现方式是在当前表单项中设置规则

    2024年02月11日
    浏览(58)
  • 前端-el-form表单校验,如何校验手机号和身份证号

    分成三部分处理 首先,要在模板的prop里添加校验规则 el-form-item label=\\\"身份证号:\\\" prop=\\\"identificationNumber\\\" 然后申明规则rules identificationNumber:[                 {required: true, validator: validatorIdCard, trigger: \\\'blur\\\'}                 ], phone: [                 { required: true, validator: v

    2024年04月25日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包