使用elementUI表單校驗(yàn)函數(shù)validate需要注意的坑及解決
使用elementUI表單校驗(yàn)函數(shù)validate需要注意的坑
elementUI表單校驗(yàn)需要使用到自定義校驗(yàn)規(guī)則,官網(wǎng)提供的API函數(shù)validate入?yún)⒕鸵粋€回調(diào)函數(shù),函數(shù)參數(shù)是返回校驗(yàn)結(jié)果(true/false)和校驗(yàn)字段名稱prop,詳見elementUI官網(wǎng)。
現(xiàn)在要講的是自定義校驗(yàn)規(guī)則函數(shù),即規(guī)則對象中的屬性validator。
自定義函數(shù)的入?yún)⒂腥齻€,分別是rule,value和callback;其中rule是返回定義的規(guī)則對象,value是當(dāng)前校驗(yàn)控件的狀態(tài)值,callback是一個校驗(yàn)結(jié)果的回調(diào)方法。
直接上圖:

圖中指出存在的坑
為什么寫if(!value)return;這段代碼呢,那是因?yàn)?,?dāng)控件如果沒有輸入任何字符而觸發(fā)事件時的處理,開始以為直接return就可以了,結(jié)果引起校驗(yàn)的其他意想不到的異常?。。?!
后面查了相關(guān)資料才知道,這個自定義校驗(yàn)函數(shù)必須返回一個回調(diào)函數(shù)“callback”!! 即圖中下邊的 callback();
返回callback的入?yún)榭沾硇r?yàn)通過規(guī)則,返回含new Error(‘自定義提示’)入?yún)⒋硇r?yàn)不通過規(guī)則。
elementUI表單驗(yàn)證validate
elementUI的form組件里對validate給出的解釋是:validate接收一個回調(diào)函數(shù),或返回 Promise
通俗點(diǎn)說,validate方法的參數(shù)可以是一個回調(diào)函數(shù),也可以為空(為空時返回Promise對象,沒啥用)
1.參數(shù)為回調(diào)函數(shù)時,該回調(diào)函數(shù)有兩個參數(shù),分別是是否校驗(yàn)成功和未通過校驗(yàn)字段,該回調(diào)函數(shù)會在校驗(yàn)結(jié)束后被調(diào)用
表單.validate(回調(diào)函數(shù)(是否校驗(yàn)成功,未通過校驗(yàn)的字段){
if(是否校驗(yàn)成功){// 校驗(yàn)成功
//成功后的操作
}else{ // 校驗(yàn)失敗
// 校驗(yàn)失敗后的操作
}
})
//非空校驗(yàn)例子
formRef.value.validate(function (valid, msg) {
if (valid) {
console.log(valid, msg);
//valid值為false
//msg值為對象
a: {message: '該字段不能為空', fieldValue: null, field: 'a'}
} else {
console.log(valid, msg);
//valid值為true
//msg值為一個空對象
}
});總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue項(xiàng)目中數(shù)據(jù)的深度監(jiān)聽或?qū)ο髮傩缘谋O(jiān)聽實(shí)例
這篇文章主要介紹了Vue項(xiàng)目中數(shù)據(jù)的深度監(jiān)聽或?qū)ο髮傩缘谋O(jiān)聽實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
Ant Design moment對象和字符串之間的相互轉(zhuǎn)化教程
這篇文章主要介紹了Ant Design moment對象和字符串之間的相互轉(zhuǎn)化教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10
使用vue-infinite-scroll實(shí)現(xiàn)無限滾動效果
vue-infinite-scroll插件可以無限滾動實(shí)現(xiàn)加載更多,其作用是是當(dāng)滾動條滾動到距離底部的指定高度時觸發(fā)某個方法。這篇文章主要介紹了用vue-infinite-scroll實(shí)現(xiàn)無限滾動效果,需要的朋友可以參考下2018-06-06
Vue export import 導(dǎo)入導(dǎo)出的多種方式與區(qū)別介紹
這篇文章主要介紹了Vue export import 導(dǎo)入導(dǎo)出的多種方式與區(qū)別介紹,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02
Vue實(shí)現(xiàn)英文字母大小寫在線轉(zhuǎn)換功能
在Web開發(fā)中,字符串處理是常見的需求之一,特別是在國際化應(yīng)用中,對于文本的格式化處理尤為重要,本文將介紹如何使用Vue.js來構(gòu)建一個簡單的在線英文字母大小寫轉(zhuǎn)換工具,需要的朋友可以參考下2024-09-09
Vue 路由組件向app.vue主文件傳值的方式(兩種常見方式)
在Vue.js中,可以使用路由傳參的方式向App.vue主頁面?zhèn)鬟f數(shù)據(jù),有多種方法可以實(shí)現(xiàn)這一目標(biāo),本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2023-11-11
解決element ui e-image和e-table一起使用顯示的問題
本文詳細(xì)解析了在使用Element Plus組件庫時,el-table與el-image嵌套導(dǎo)致樣式錯亂的問題,并提供了有效的解決代碼示例,幫助開發(fā)者優(yōu)化頁面布局2026-05-05
關(guān)于Vue中echarts響應(yīng)式頁面變化resize()的用法介紹
Vue項(xiàng)目中開發(fā)數(shù)據(jù)大屏,使用echarts圖表根據(jù)不同尺寸的屏幕進(jìn)行適配,resize()可以調(diào)用echarts中內(nèi)置的resize函數(shù)進(jìn)行自適應(yīng)縮放,本文將給大家詳細(xì)介紹resize()的用法,需要的朋友可以參考下2023-06-06

