vue,elementUI多表单同时提交,表单校验解决方案

问:

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

答:

  1. 为每个组件设置ref,值分别为ref1,ref2,ref3,再为各个组件中的el-form设置独立的ref和rules,三个表单的ref值分别为form1,form2,form3.
html 复制代码
// 组件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>
  1. 父级组件引入三个子组件
html 复制代码
<Component1 ref="ref1"></Component1>
<Component2 ref="ref2"></Component2>
<Component3 ref="ref3"></Component3>
<button @click="onSave">保存</button>
  1. 保存方法实现
html 复制代码
<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>
相关推荐
小希smallxi3 分钟前
在 Spring Boot 项目中,如何在非 Web 层(如 AOP)中获取 Session 信息
前端·spring boot·后端
申阳6 分钟前
Day 14:个人开发者的 Cloudflare 通关指南-将域名托管到 Cloudflare
前端·后端·程序员
申阳7 分钟前
Day 13:个人开发者的 Cloudflare 通关指南-R2对象存储搭建高速免费图床
前端·后端·程序员
nvd1111 分钟前
niri 音频图形界面工具
前端·chrome·音视频
凯哥197012 分钟前
彻底解决 Windsurf 在 Vue DevTools 无法精准定位的问题
前端
凡人程序员13 分钟前
微前端qiankun接入的问题
前端·javascript
CharlieWang15 分钟前
AI Elements Vue,帮助你更快的构建 AI 应用程序
前端·人工智能·chatgpt
新晨43718 分钟前
JavaScript map() 方法:从工具到编程哲学的升华
前端·javascript
醒了接着睡19 分钟前
JS 对象深拷贝
javascript
少卿20 分钟前
Webpack 构建流程全解:从源码到产物的“奇幻漂流”
前端·webpack