element表單使用校驗(yàn)之校驗(yàn)失效問(wèn)題詳解
首先是html必須正確,直接看代碼示例:
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form-item label="名稱(chēng)" prop="name"> <el-input v-model="form.name"></el-input> </el-form-item> <el-form-item label="性別" prop="sex"> <el-input v-model="form.sex"></el-input> </el-form-item> <el-form-item label="年齡" prop="age"> <el-input v-model="form.age"></el-input> </el-form-item> </el-form>
第一種可能的錯(cuò)誤: 字段錯(cuò)誤
其中的每個(gè) el-form-item 標(biāo)簽中,都有一個(gè) prop ,其中的值是我們 rules 對(duì)象中的 某個(gè) 屬性。
然后我們 v-model 綁定的值也必須是 這個(gè) 屬性
比如我們的字段是 userName,我們的prop還是name時(shí),校驗(yàn)失效
<el-form-item label="名稱(chēng)" prop="name"> <el-input v-model="form.userName"></el-input> </el-form-item>
再來(lái)看js中的代碼:
form: { name: undefined, sex: undefined, age: undefined }, rules: { name: [ { required: true, message: "用戶(hù)名稱(chēng)不能為空", trigger: "blur" }, { min: 2, max: 20, message: '用戶(hù)名稱(chēng)長(zhǎng)度必須介于 2 和 20 之間', trigger: 'blur' } ], sex: [ { required: true, message: "性別不能為空", trigger: "blur" } ], age: [ { required: true, message: "年齡不能為空", trigger: "blur" }, { pattern: /^([0-9]|[1-9]\d|[1-9]\d\d)$/, message: '年齡介于 0-999 之間', trigger: 'blur' } ] }
第二種:觸發(fā)校驗(yàn)錯(cuò)誤
rules 中 每個(gè)校驗(yàn)對(duì)象 都有一項(xiàng) trigger 是檢驗(yàn)觸發(fā)的方式
對(duì) el-input
輸入框的驗(yàn)證,trigger
的值選blur
,即失去焦點(diǎn)時(shí)進(jìn)行驗(yàn)證。
下拉框 el-select
、日期選擇器 el-date-picker
、復(fù)選框 el-checkbox
、單選框 el-radio
驗(yàn)證時(shí),trigger
的值選擇change
,即當(dāng)值發(fā)生變化時(shí)就進(jìn)行驗(yàn)證。
沒(méi)有任何輸入的時(shí)候,不會(huì)觸發(fā) change , 但一定會(huì)觸發(fā) blur 事件
注:如果使用了其他的組件(非ele組件等),組件中沒(méi)有 v-model 等等情況時(shí),值改變時(shí)需要我們手動(dòng)去觸發(fā)校驗(yàn)
方法名 | 說(shuō)明 | 參數(shù) |
validateField | 對(duì)部分表單字段進(jìn)行校驗(yàn)的方法 | Function(props: array | string, callback: Function(errorMessage: string)) |
this.$refs.表單ref名稱(chēng).validateField(校驗(yàn)字段);
validator
最后提一下自定義校驗(yàn),用于一些校驗(yàn)一些復(fù)雜的值
validator的參數(shù)有:(rule, value, callback),前三個(gè)比較重要。
- rule:指向該條規(guī)則對(duì)象。
- value:新的值,用于參與運(yùn)算、對(duì)比。
- callback:執(zhí)行回調(diào),使用方法是:callback('...');。
- 如果不傳參:表示驗(yàn)證通過(guò),一般不必專(zhuān)門(mén)強(qiáng)調(diào)。
- 如果傳入值:字符串會(huì)作為錯(cuò)誤提示,但是顯示優(yōu)先級(jí)低于外層的message。比如callback('內(nèi)層錯(cuò)誤提示');跟message: '外層錯(cuò)誤提示'同時(shí)存在,則會(huì)提示:外層錯(cuò)誤提示。
直接看代碼
data(){ const name = (rule, value, callback) => { console.log(rule) console.log(value) console.log(callback) if (this.oldName === value) { callback(new Error("新名字不能和舊名字一致")); } else { callback(); } }; return { rules: { name: [ { required: true, trigger: "blur", message: "請(qǐng)?jiān)俅屋斎胄旅? }, { required: true, validator: name, trigger: "blur" } ] } }
更多的參數(shù)和核心代碼 可以查看 ele 實(shí)現(xiàn)校驗(yàn)使用的 async-validator
總結(jié)
到此這篇關(guān)于element表單使用校驗(yàn)之校驗(yàn)失效問(wèn)題的文章就介紹到這了,更多相關(guān)element表單校驗(yàn)失效內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- element的表單校驗(yàn)證件號(hào)規(guī)則及輸入“無(wú)”的情況校驗(yàn)通過(guò)(示例代碼)
- elementUI動(dòng)態(tài)嵌套el-form表單校驗(yàn)舉例詳解
- ElementPlus表單rules校驗(yàn)的方法步驟
- Vue Element UI 表單自定義校驗(yàn)規(guī)則及使用
- Vue如何使用ElementUI對(duì)表單元素進(jìn)行自定義校驗(yàn)及踩坑
- Vue系列之Element?UI表單自定義校驗(yàn)規(guī)則
- Element通過(guò)v-for循環(huán)渲染的form表單校驗(yàn)的實(shí)現(xiàn)
- element表單驗(yàn)證如何清除校驗(yàn)提示語(yǔ)
- element?ui?From表單校驗(yàn)不生效問(wèn)題解決
相關(guān)文章
Vue如何實(shí)現(xiàn)文件預(yù)覽和下載功能的前端上傳組件
在Vue.js項(xiàng)目中,使用ElementUI的el-upload組件可以輕松實(shí)現(xiàn)文件上傳功能,通過(guò)配置組件參數(shù)和實(shí)現(xiàn)相應(yīng)的方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-09-09解決vue中無(wú)法動(dòng)態(tài)修改jqgrid組件 url地址的問(wèn)題
下面小編就為大家分享一篇解決vue中無(wú)法動(dòng)態(tài)修改jqgrid組件 url地址的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-0315 分鐘掌握vue-next函數(shù)式api(小結(jié))
這篇文章主要介紹了15 分鐘掌握vue-next函數(shù)式api(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10vue3在table里使用elementUI的form表單驗(yàn)證的示例代碼
這篇文章主要介紹了vue3在table里使用elementUI的form表單驗(yàn)證的示例代碼,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-12-12Vue.js如何監(jiān)聽(tīng)window窗口尺寸變化
使用VUE開(kāi)發(fā)后臺(tái)項(xiàng)目,后臺(tái)項(xiàng)目需要進(jìn)行后臺(tái)根據(jù)瀏覽器窗口進(jìn)行變化,需要使用vue來(lái)監(jiān)聽(tīng)瀏覽器的窗口變化,這篇文章主要給大家介紹了關(guān)于Vue.js如何監(jiān)聽(tīng)window窗口尺寸變化的相關(guān)資料,需要的朋友可以參考下2023-11-11Vue如何處理Axios多次請(qǐng)求數(shù)據(jù)顯示問(wèn)題
這篇文章主要介紹了Vue如何處理Axios多次請(qǐng)求數(shù)據(jù)顯示問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01移動(dòng)端Vue2.x Picker的全局調(diào)用實(shí)現(xiàn)
這篇文章主要介紹了移動(dòng)端Vue2.x Picker的全局調(diào)用實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03