一、页面多表单验证
<div class="edit-item" v-for="(option, index) in questions.optionList" :key="option.optionName">
<el-form size="mini" :model="option" :rules="rules" ref="ruleForm">
<el-form-item prop="optionValue">
.....
</el-form-item>
</el-form>
</div>
getFormPromise(form) {
return new Promise((resolve) => {
form.validate((res) => {
resolve(res);
});
});
},
async saveQuestions(questions) {
const form1 = this.$refs.mustRewardRef.$refs.ruleForm;
const form2= this.$refs.extraRewardRef.$refs.ruleForm;
const form2= this.$refs.extraRewardRef.$refs.ruleForm;
原文链接:https:
Promise.all([form1,form2,form3].map(this.getFormPromise)).then((res) => {
const validateResult = res.every((item) => !!item);
if (validateResult) {
console.log("表单都校验通过");
this.submitQuestion(questions);
} else {
console.log("表单未校验通过");
}
});
},
二、 多组件表单验证
<div class="questionsItem" v-for="(questions, itemIndex) in formInline.itemList" :key="itemIndex">
<option-item
v-if="questions.isDisplay"
:mode="mode"
ref="optionItemRef"
@nextItemId="getNextItemId"
:form="answerForm[itemIndex]"
optionKey="id"
:questions="questions"
:controlType="questions.controlType"
/>
</div>
getFormPromise(form) {
return new Promise((resolve) => {
form.$refs["ruleForm"].validate((res) => {
resolve(res);
});
});
},
validateQuestion() {
let formArr = this.$refs.optionItemRef;
Promise.all(formArr.map(this.getFormPromise)).then((res) => {
const validateResult = res.every((item) => !!item);
if (validateResult) {
console.log("表单都校验通过");
this.submitQuestion();
} else {
console.log("表单未校验通过");
}
});
},