vue+elementUI多表单同时提交及表单校验最新解决方案

 更新时间:2024年03月08日 09:35:04   作者:垃圾侠  
假设有一个页面,需要分三步填写三个表单,且每个表单位于独立的组件中,然后最后保存同时提交,如何进行表单必填项校验,下面小编给大家介绍vue+elementUI多表单同时提交及表单校验最新解决方案,感兴趣的朋友一起看看吧

问:

假设有一个页面,需要分三步填写三个表单,且每个表单位于独立的组件中,然后最后保存同时提交,如何进行表单必填项校验?

答:

1. 为每个组件设置ref,值分别为ref1,ref2,ref3,再为各个组件中的el-form设置独立的ref和rules,三个表单的ref值分别为form1,form2,form3.

// 组件1 <Component1 ref="ref1"></Component1>
<template>
    <div>
        <el-form ref="form1"></el-form>
    </div>
</template>
// 组件2 <Component2 ref="ref2"></Component2>
<template>
    <div>
        <el-form ref="form2"></el-form>
    </div>
</template>
// 组件3 <Component3 ref="ref3"></Component3>
<template>
    <div>
        <el-form ref="form3"></el-form>
    </div>
</template>

2. 父级组件引入三个子组件

<Component1 ref="ref1"></Component1>
<Component2 ref="ref2"></Component2>
<Component3 ref="ref3"></Component3>
<button @click="onSave">保存</button>

3. 保存方法实现

<script>
...
methods: {
    onSave(){
        let formData1 = this.$refs.ref1.$refs.form1;
        let formData2 = this.$refs.ref2.$refs.form2;
        let formData3 = this.$refs.ref3.$refs.form3;
        Promise.all([formData1, formData2 ,formData3].map(this.getFormPromise)).then(res=>{
            const validateResult = res.every((item) => !!item);
               if (validateResult) {
                 // 校验通过,获取各个组件中的表单内容,提交后台    
                }else {
                    this.$message.warning('必填内容未填写');
                }
            })
    },
    getFormPromise(form) {
            return new Promise((resolve) => {
                form.validate((res) => {
                    resolve(res);
                });
            });
        },
}
</script>

到此这篇关于vue+elementUI多表单同时提交及表单校验解决方案的文章就介绍到这了,更多相关vue elementUI多表单内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue项目打包之后生成一个可修改IP地址的文件(具体操作)

    vue项目打包之后生成一个可修改IP地址的文件(具体操作)

    这篇文章主要介绍了vue项目打包之后生成一个可修改IP地址的文件(具体操作),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • 基于Vue.js 2.0实现百度搜索框效果

    基于Vue.js 2.0实现百度搜索框效果

    这篇文章主要为大家详细介绍了基于Vue.js 2.0实现百度搜索框效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • Vue如何将当前窗口截图并将数据base64转为png格式传给服务器

    Vue如何将当前窗口截图并将数据base64转为png格式传给服务器

    这篇文章主要介绍了Vue如何将当前窗口截图并将数据base64转为png格式传给服务器,通过实例代码介绍了将当前窗口截图,并将数据存储下来,需要的朋友可以参考下
    2023-10-10
  • vue如何封装Axios的get、post请求

    vue如何封装Axios的get、post请求

    这篇文章主要介绍了vue如何封装Axios的get、post请求,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • vite打包出现 "default" is not exported by "node_modules/...问题解决办法

    vite打包出现 "default" is not exported by "

    这篇文章主要给大家介绍了关于vite打包出现 "default" is not exported by "node_modules/...问题的解决办法,文中通过代码将解决的办法介绍的非常详细,对同样遇到这个问题的朋友具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-06-06
  • 源码分析Vue.js的监听实现教程

    源码分析Vue.js的监听实现教程

    这篇文章主要通过源码分析介绍了Vue.js的监听实现,文中通过示例代码介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-04-04
  • 详解如何优雅运用Vue中的KeepAlive组件

    详解如何优雅运用Vue中的KeepAlive组件

    在Vue中,KeepAlive组件是一种特殊的组件,用于缓存已经渲染过的组件实例,本文主要为大家详细介绍了KeepAlive组件的用法,需要的小伙伴可以参考下
    2023-09-09
  • Vue如何获取url路由地址和参数简单示例

    Vue如何获取url路由地址和参数简单示例

    这篇文章主要给大家介绍了Vue如何获取url路由地址和参数的相关资料,通过简单的代码示例,帮助读者快速掌握Vue路由的基本用法,需要的朋友可以参考下
    2023-03-03
  • vue 使用mescroll.js框架实现下拉加载和上拉刷新功能

    vue 使用mescroll.js框架实现下拉加载和上拉刷新功能

    这篇文章主要介绍了vue 使用mescroll.js框架 实现下拉加载和上拉刷新功能,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • 一文教你如何在Vue项目中使用Emoji表情

    一文教你如何在Vue项目中使用Emoji表情

    这篇文章主要为大家详细介绍了在vue项目中如何使用emoji表情,包括font-awesome图标,v-emoji-picker,vue-emoji等emoji表情库,需要的可以参考下
    2025-03-03

最新评论