代码部分

<!---HTML部分---->
<el-tabs v-model="editableTabsValue" type="card">
            <el-tab-pane :key="index" v-for="(item, index) in editableTabs"
              :label="item.title" :name="String(index)">
            <el-form :model="item" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
                <el-form-item label="活动区域" prop="region">
                    <el-input v-model="item.region"></el-input>
                </el-form-item>
                <el-form-item label="name" prop="name">
                    <el-input v-model="item.name"></el-input>
                </el-form-item>
            </el-form>
            </el-tab-pane>
          </el-tabs>
          <button @click="sumbit">提交</button>
          // js部分
          data: function(){
                return {
                    editableTabsValue: '0',
                    editableTabs: [
                        { title: 'Tab 1',name: '1',region: '1 content'},
                        {title: 'Tab 2', name: '2',region: '2 content'}
                    ],
                    ruleForm: {
                        name: '',
                        region: '',
                    },
                    rules: {
                        name: [
                            { required: true, message: '请输入活动名称', trigger: 'blur' },
                        ],
                        region: [
                            { required: true, message: '请选择活动区域', trigger: 'blur' }
                        ],
                    }
                }
            },
        methods:{
                sumbit() {
                    let arr = this.editableTabs;//我是需要校验的表单集合
                    for (let i = 0; i <arr.length; i++) {
                            let a = arr[i];
                            // 根据ref的值并对应下标,去校验每一个form表单
                            console.info('this.$refs', this.$refs['ruleForm'][i]);
                            this.$refs['ruleForm'][i].validate((valid) => {
                            // i下的表单通过的话set健值对用于区分是否通过校验
                            if (!valid) {
                                console.error('第'+ i + '个未通过');
                                this.$set(a, 'valid', false)
                            } else {
                                this.$set(a, 'valid', true)
                            }
                            });
                        }
                        //遍历数组的每一项form都为true时才能进行下一步操作
                        let flag = this.editableTabs.every(item => {
                            return item.valid === true
                        })
                        console.info('flag',flag);
                        if (flag) {//全部通过校验
                            // 逻辑操作
                        } else {//有表单未通过校验
                            // 逻辑操作
                        }
                }
            }

效果图:

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐