vue3 +Element Plus 多個(gè)表單動(dòng)態(tài)循環(huán)ref及校驗(yàn)

html

<template v-for="(item, index) in declarationInfoFieldList" :key="item.id">
                <div class="detail-title" :data-id="3">{{ item.templateName }}</div>
                <q-form
                    :isReadonly="isDetail"
                    class="is-three-form"
                    label-width="130px"
                    :ref="(el:any) => setFormRef(el, index)"
                    :fieldForm="myFieldForm"
                    :fieldList="item.list"
                >
                </q-form>
            </template>

js

// 動(dòng)態(tài)ref
const formRefList = ref<any[]>([]);
const setFormRef = (el: any, index: number) => {
    if (el) {
        formRefList.value[index] = el;
    }
};
// 提交
const submit = () => {
    return new Promise(async (resolve) => {
        let allValid = true;
        const formRefListLength = formRefList.value.length;

        for (let i = 0; i < formRefListLength; i++) {
            const formRef = formRefList.value[i];
            try {
                const valid = await new Promise((resolveValidate) => {
                    formRef.validate((isValid: any) => {
                        resolveValidate(isValid);
                    });
                });

                if (!valid) {
                    allValid = false;
                    ElMessage.error("請(qǐng)完善" + declarationInfoFieldList.value[i].templateName + "!");
                    break; // 一旦發(fā)現(xiàn)無(wú)效表單,立即退出循環(huán)
                }
            } catch (error) {
                // 處理可能的錯(cuò)誤,例如表單驗(yàn)證回調(diào)未正確調(diào)用
                console.error("表單驗(yàn)證出錯(cuò):", error);
                allValid = false;
                break;
            }
        }

        if (allValid) {
            resolve(true); // 所有表單都有效
        } else {
            resolve(false); // 至少有一個(gè)表單無(wú)效
        }
    });
};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容