0
点赞
收藏
分享

微信扫一扫

[element-ui] el-form提交时校验循环出来的多个form表单


循环得到的表单 在点击按钮时要验证每一个form

<div class="formBox" v-for="(item, index) in ruleForm" :key="index">
<el-form :model="ruleForm[index]" :rules="rules" :ref="'ruleFormRef'+index">
<el-form-item label="活动名称" prop="name">
<el-input v-model="item.name"></el-input>
</el-form-item>
<el-form-item label="活动区域" prop="region">
<el-select v-model="item.region" placeholder="请选择活动区域">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
</el-form-item>
<el-form-item label="活动形式" prop="desc">
<el-input type="textarea" v-model="item.desc"></el-input>
</el-form-item>
</el-form>
</div>

ruleForm: [{
name: '',
region: '',
desc: '',
}, {
name: '',
region: '',
desc: '',
}, {
name: '',
region: '',
desc: '',
}],
rules: {
name: [
{ required: true, message: '请输入活动名称', trigger: 'blur' },
],
region: [
{ required: true, message: '请选择活动区域', trigger: 'change' }
],
desc: [
{ required: true, message: '请填写活动形式', trigger: 'blur' }
]
}

checkForm(formName) {
console.log(formName,'formName');
const that = this;
console.log(that.$refs[formName][0],'that.$refs[formName]');
const result = new Promise(((resolve, reject) => {
that.$refs[formName][0].validate((valid) => {
if (valid) {
resolve();
} else { reject(); }
});
}));
that.resultArr.push(result); // push 得到promise的结果
},

submitForm(formName) {
const that = this;
this.ruleForm.forEach((el, index) => {
this.checkForm(`ruleFormRef${index}`); // 验证多个表单
});
that.resultArr = [];
Promise.all(this.resultArr).then((values) => { // 多个表单都通过验证
alert(1)
}).catch((_) => {
// console.log('err');
});
},

[element-ui] el-form提交时校验循环出来的多个form表单_form表单

[element-ui] el-form提交时校验循环出来的多个form表单_表单_02


参考:

​​el-form提交时校验循环出来的多个form表单​​


举报

相关推荐

0 条评论