Element?UI表單驗(yàn)證規(guī)則動(dòng)態(tài)失效問(wèn)題的解決辦法
Element 版本:v2.15.3
問(wèn)題背景
如下代碼所示:有一個(gè)上傳文件的 input 組件,在更新的時(shí)候,如果不上傳文件表示不更新,如果要更新則點(diǎn)擊 「重新上傳」按鈕將上傳組件顯示出來(lái)
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <!-- 這個(gè)字段不是必須的沒(méi)有寫 prop --> <el-form-item v-if="!updateDocument" label="文檔"> <el-button @click="updateDocument = true">重新上傳</el-button> <base-tips margin-left="15px">如需變更請(qǐng)重新上傳文檔</base-tips> </el-form-item> <!-- 要更新的話:這個(gè)字段要求必須,寫 prop --> <el-form-item v-if="updateDocument" label="文檔" prop="document"> <input :accept="supportFilesType" ref="documentFile" type="file" @change="documentFileChange"/> </el-form-item> </el-form>
也就是如上圖:不更新的話,該字段不是必須的,提交的時(shí)候就不會(huì)被校驗(yàn),如果更新的話,就要讓這個(gè)字段為必填項(xiàng)。
上述代碼:從頁(yè)面上看是正常的,有前面那個(gè)紅色的 * 號(hào),但是在提交的時(shí)候,并沒(méi)有觸發(fā)驗(yàn)證。
解決方案
首先:查看表單組件的信息,最終在 Field 這個(gè)屬性下發(fā)現(xiàn)了問(wèn)題
console.log(this.$refs.form)
- 進(jìn)入頁(yè)面的時(shí)候,F(xiàn)ield 中顯示的字段數(shù)量不包含 document,因?yàn)檫M(jìn)入頁(yè)面默認(rèn)是不更新
- 切換到更新狀態(tài),F(xiàn)ield 中的字段數(shù)量并沒(méi)有變更,那么問(wèn)題就出現(xiàn)在這里了
這種情況的最主要原因是:表單組件沒(méi)有觸發(fā)重新渲染,解決方案靠譜的有:
- 在 el-form-item 上增加 key 屬性,也就是 vue 中的 key
- 在 el-form-item 上手動(dòng)寫上指定的,rules
<!-- 寫上 prop,并且手動(dòng)指定 rules,由于需要不校驗(yàn)該字段,設(shè)置一個(gè)規(guī)則 required:false --> <el-form-item v-if="!updateDocument" label="文檔" prop="document" :rules="[{required:false}]"> <el-button @click="updateDocument = true">重新上傳</el-button> <base-tips margin-left="15px">如需變更合同請(qǐng)重新上傳文檔</base-tips> </el-form-item> <!-- 寫上 prop,由于需要驗(yàn)證該字段,直接指向原來(lái)的 rules 中的規(guī)則--> <el-form-item v-if="updateDocument" label="文檔" prop="document" :rules="rules.document"> <input :accept="supportFilesType" ref="documentFile" type="file" @change="documentFileChange"/> </el-form-item>
總結(jié)
到此這篇關(guān)于Element UI表單驗(yàn)證規(guī)則動(dòng)態(tài)失效問(wèn)題解決的文章就介紹到這了,更多相關(guān)ElementUI表單驗(yàn)證規(guī)則動(dòng)態(tài)失效內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
輕量級(jí)富文本編輯器wangEditor結(jié)合vue使用方法示例
在我們項(xiàng)目中,有些時(shí)候需要使用富文本編輯器。本文將以百度開發(fā)的Ueditor結(jié)合Vue.js介紹一下。非常具有實(shí)用價(jià)值,需要的朋友可以參考下2018-10-10Vue生態(tài)系統(tǒng)工具庫(kù)Vueuse的使用示例詳解
Vueuse 是一個(gè)功能強(qiáng)大的 Vue.js 生態(tài)系統(tǒng)工具庫(kù),它提供了一系列的可重用的 Vue 組件和函數(shù),本文將介紹 Vueuse 的主要特點(diǎn)和用法,以及它在 Vue.js 開發(fā)中的作用和優(yōu)勢(shì),感興趣的可以了解下2024-02-02