element多個表單校驗的實現(xiàn)
在項目中,經(jīng)常會遇到表單檢驗,單個表單檢驗可查看element的官網(wǎng)文檔,里面有詳細(xì)的介紹。在這里我分享在實際項目中遇到多個表單同時進(jìn)行校驗以及我的解決方法,歡迎大家留言,一起探討相關(guān)技術(shù),請多多指教。
這里主要用到 Promise 來解決。
關(guān)于Promise方法舉個例子來抽象理解:
周末想吃火鍋,打電話告訴小A,過來我這打火鍋,菜都齊了,就差點海鮮,你來的時候帶點。接著打電話找朋友小B,過來我這打火鍋,有海鮮,肉少了點,你來的時候帶點。在接著打電話找朋友小C:過來我這打火鍋,啥菜都有了,差點酒,你來的時候整幾瓶。還差一包火鍋底料,拿手機(jī)打電話,小D啊,來打活個,咋幾個都在,我這電爐不太行了,啥都準(zhǔn)備好了,你把電爐帶過來,順便帶包底料。
吃火鍋這個事就成了,美滋滋。
但這個事吧??偛粫恢表樌?,總有人來不了對吧,來不了這火鍋就吃不成了。
其實多個表單驗證,就和這差不多,每個表單都詢問一遍,如果大家都通過了,美滋滋,假如其中一個驗證失敗,那對不起,還得告訴用戶,填對了再說。
通過Promise,對每個表單執(zhí)行詢問檢測,無論結(jié)果如果,先進(jìn)入Promise.all中,等待所有表單詢問完畢,如果大家就可以,就觸發(fā)then,美滋滋。反之,catch中執(zhí)行失敗響應(yīng)就ok了。
const formName = ['tableForm1', 'tableForm2', 'tableForm3'] const validates = (item) => { return new Promise((resolve, reject) => { if (!this.$refs[item]) { resolve() return false } this.$refs[item].validate((valid) => { if (valid) { resolve() } else { reject(new Error('驗證不對')) } }) }) } Promise.all(formName.map(item => validates(item))).then(() => { console.log('成功') }).catch(() => { console.log('失敗') }) } }
最后,在這里貼上完整代碼:
<div class="home"> <el-form :model="tableForm1" ref="tableForm1" :rules="rules1" label-width="100px" > <el-form-item label="價格" prop="price"> <el-input v-model.number="tableForm1.price" autocomplete="off"></el-input> </el-form-item> </el-form> <el-form :model="tableForm2" ref="tableForm2" :rules="rules2" label-width="100px" > <el-form-item label="年齡" prop="age"> <el-input v-model.number="tableForm2.age" autocomplete="off"></el-input> </el-form-item> </el-form> <el-form :model="tableForm3" ref="tableForm3" :rules="rules3" label-width="100px" > <el-form-item label="姓名" prop="name"> <el-input v-model.number="tableForm3.name" autocomplete="off"></el-input> </el-form-item> </el-form> <el-button type="primary" @click="submitForm">提交</el-button> <el-button @click="resetForm">重置</el-button> </div> </template> <script> export default { name: 'Home', data () { return { tableForm1: { price: '' }, tableForm2: { age: '' }, tableForm3: { name: '' }, rules1: { price: [{ required: true, message: '價格不能為空', trigger: 'blur' }] }, rules2: { age: [{ required: true, message: '年齡不能為空', trigger: 'blur' }] }, rules3: { name: [{ required: true, message: '姓名不能為空', trigger: 'blur' }] } } }, methods: { resetForm () { this.$refs.tableForm1.resetFields() this.$refs.tableForm2.resetFields() this.$refs.tableForm3.resetFields() }, submitForm () { const formName = ['tableForm1', 'tableForm2', 'tableForm3'] const validates = (item) => { return new Promise((resolve, reject) => { if (!this.$refs[item]) { resolve() return false } this.$refs[item].validate((valid) => { if (valid) { resolve() } else { reject(new Error('驗證不對')) } }) }) } Promise.all(formName.map(item => validates(item))).then(() => { console.log('成功') }).catch(() => { console.log('失敗') }) } } } </script>
到此這篇關(guān)于element多個表單校驗的實現(xiàn)的文章就介紹到這了,更多相關(guān)element 表單校驗內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 基于Vue+elementUI實現(xiàn)動態(tài)表單的校驗功能(根據(jù)條件動態(tài)切換校驗格式)
- 詳解element-ui 表單校驗 Rules 配置 常用黑科技
- Vue ElementUi同時校驗多個表單(巧用new promise)
- element表單驗證如何清除校驗提示語
- vue elementUI 表單校驗功能之?dāng)?shù)組多層嵌套
- Vue?elementUI表單嵌套表格并對每行進(jìn)行校驗詳解
- element form 校驗數(shù)組每一項實例代碼
- 詳解基于element的區(qū)間選擇組件校驗(交易金額)
- element中el-table中的el-input校驗的實現(xiàn)
相關(guān)文章
解決vue3傳屬性時報錯[Vue?warn]:Component?is?missing?template?or
這篇文章主要給大家介紹了關(guān)于解決vue3傳屬性時報錯[Vue?warn]:Component?is?missing?template?or?render?function的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01VUE側(cè)邊導(dǎo)航欄實現(xiàn)篩選過濾的示例代碼
本文主要介紹了VUE側(cè)邊導(dǎo)航欄實現(xiàn)篩選過濾的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05ant design Vue 純前端實現(xiàn)分頁問題
這篇文章主要介紹了ant design Vue 純前端實現(xiàn)分頁問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04Vue?vant-ui框架實現(xiàn)上拉加載下拉刷新功能
功能需求——獲取后端接口返回的數(shù)據(jù),實現(xiàn)列表數(shù)據(jù)上滑加載更多下一頁數(shù)據(jù),下拉數(shù)據(jù)刷新功能,結(jié)合vant-ui框架實現(xiàn)??芍苯訁⒖际褂?/div> 2022-09-09Vue3實現(xiàn)SSE(Server-Sent?Events)連接
SSE?是一種允許服務(wù)器向瀏覽器推送事件的技術(shù),這篇文章主要為大家詳細(xì)介紹了如何通過vue3實現(xiàn)SSE(Server-Sent?Events)連接,有需要的小伙伴可以了解下2024-10-10最新評論