el-form表單驗(yàn)證的一些實(shí)用方法總結(jié)
前言
Form 組件提供了表單驗(yàn)證的功能,只需要通過 rules 屬性傳入約定的驗(yàn)證規(guī)則,并將 Form-Item 的 prop 屬性設(shè)置為需校驗(yàn)的字段名即可。
前置知識(shí)點(diǎn)
- 根據(jù)文檔說明,model為表單的數(shù)據(jù)對(duì)象,el-form通過model綁定數(shù)據(jù)。
- reles為表單驗(yàn)證規(guī)則對(duì)象,其中字段名要與model中的字段名一一對(duì)應(yīng)
- el-form-item 容器,通過 label 綁定標(biāo)簽,prop屬性設(shè)置為需要驗(yàn)證的字段名
- 表單組件通過 v-model 綁定 model 中的數(shù)據(jù)
表單校驗(yàn)相關(guān)屬性
- hide-required-asterisk:是否隱藏必填字段的標(biāo)簽旁邊的紅色星號(hào)(隱藏必錄標(biāo)識(shí))
- inline-message:是否以行內(nèi)形式展示校驗(yàn)信息(驗(yàn)證消息是否在一行顯示)
方式一(無表單嵌套)
以一般的form表單為例:
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px"
class="demo-ruleForm">
<el-form-item label="活動(dòng)名稱" prop="name">
<el-input v-model="ruleForm.name"></el-input>
</el-form-item>
<el-form>
一般在vue中這樣來寫,就可以對(duì)表單進(jìn)行驗(yàn)證。
data(){
return {
ruleForm: { name: '' },
rules: {
name: [
{ required: true, message: '請(qǐng)輸入活動(dòng)名稱', trigger: 'blur' },
{ min: 3, max: 5, message: '長度在 3 到 5 個(gè)字符', trigger: 'blur' }
]
}
}
},
如果有一些復(fù)雜的驗(yàn)證規(guī)則,也可以選擇自定義驗(yàn)證, validator
data() {
const userValidator = (rule, value, callback) => {
if (value.length > 3) {
callback()
} else {
callback(new Error('用戶名長度必須大于3'))
}
}
return {}
}
rules: {
user: [
{ validator: userValidator, trigger: 'change' }
]
}
方式二(表單嵌套)
嵌套的表單,一般業(yè)務(wù)場(chǎng)景是,有一些表單項(xiàng)需要按照條件顯示或者隱藏,data里面的model數(shù)據(jù)可能會(huì)是對(duì)象里面套對(duì)象的,el-form也同樣支持嵌套的驗(yàn)證,寫法一般如下:
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px"
class="demo-ruleForm">
<el-form-item label="活動(dòng)名稱">
<el-input v-model="ruleForm.name"></el-input>
<el-form-item prop="info.name">
<el-input v-model="ruleForm1.info.name"></el-input>
</el-form-item>
</el-form-item>
<el-form>
data(){
return {
ruleForm: {
info: {
name: ''
}
},
}
}
rules里面同樣也可以這樣寫
rules: {
info: {
name: [{ required: true, message: '請(qǐng)選擇', trigger: 'change' }],
}
}方式三(動(dòng)態(tài)表單驗(yàn)證)
除了在 Form 組件上一次性傳遞所有的驗(yàn)證規(guī)則外還可以在單個(gè)的表單域上傳遞屬性的驗(yàn)證規(guī)則.
動(dòng)態(tài)添加form-item的時(shí)候,可以使用
<el-form-item prop="email" label="郵箱" :rules="[ { required: true, message: '請(qǐng)輸入郵箱地址', trigger: 'blur' }, { type: 'email', message: '請(qǐng)輸入正確的郵箱地址', trigger: ['blur', 'change'] } ]" > <el-input v-model="dynamicValidateForm.email"></el-input> </el-form-item>
方式四(動(dòng)態(tài)添加校驗(yàn)規(guī)則)
根據(jù)條件判斷是否需要某種驗(yàn)證規(guī)則時(shí),一個(gè)簡單的使用場(chǎng)景就是,通過不同的type去顯示不同的錯(cuò)誤信息。
const message =
this.type === 'addFirst'
? '請(qǐng)輸入一級(jí)名稱'
: this.type === 'addChild'
? '請(qǐng)輸入二級(jí)名稱'
: this.type === 'addThree' && this.editChannelItem
? '請(qǐng)選擇三級(jí)名稱'
: '請(qǐng)輸入三級(jí)名稱';
const validatorHandle = (rule, value, callback) => {
if (value) {
callback();
} else {
callback(new Error(message));
}
};
const newRule = [...this.formInfoRules.name, { validator: validatorHandle, trigger: 'blur' }];
this.formInfoRules = Object.assign({}, this.formInfoRules, { name: newRule });
方式五(手動(dòng)控制校驗(yàn)狀態(tài))
error錯(cuò)誤信息
validate-status驗(yàn)證狀態(tài)。 success 驗(yàn)證成功, error驗(yàn)證失敗, validating驗(yàn)證中,''未驗(yàn)證
這樣使用:
<el-form-item
:error="validateFormState.error"
:validate-status="validateFormState.state"
>
</el-form-item>
validateFormState = {
periodSendDateError: '',
periodSendDateStatus: 'success',
};
在驗(yàn)證成功或者失敗的時(shí)候去手動(dòng)控制error和validate-status的值即可。總結(jié)
到此這篇關(guān)于el-form表單驗(yàn)證的一些實(shí)用方法總結(jié)的文章就介紹到這了,更多相關(guān)el-form表單驗(yàn)證內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue3?Composition?API優(yōu)雅封裝第三方組件實(shí)例
這篇文章主要為大家介紹了Vue3?Composition?API優(yōu)雅封裝第三方組件實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
VueJS設(shè)計(jì)與實(shí)現(xiàn)之淺響應(yīng)與深響應(yīng)詳解
這篇文章主要為大家介紹了VueJS設(shè)計(jì)與實(shí)現(xiàn)之淺響應(yīng)與深響應(yīng)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
vue element-ui el-cascader級(jí)聯(lián)選擇器數(shù)據(jù)回顯的兩種實(shí)現(xiàn)方法
這篇文章主要介紹了vue element-ui el-cascader級(jí)聯(lián)選擇器數(shù)據(jù)回顯的兩種實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2023-07-07
vue中實(shí)現(xiàn)展示與隱藏側(cè)邊欄功能
這篇文章主要介紹了vue中實(shí)現(xiàn)展示與隱藏側(cè)邊欄功能,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
vue實(shí)現(xiàn)播放后端flask發(fā)送的mp3文件
這篇文章主要為大家詳細(xì)介紹了vue如何實(shí)現(xiàn)播放后端flask發(fā)送的mp3文件,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01
一看就會(huì)的vuex實(shí)現(xiàn)登錄驗(yàn)證(附案例)
這篇文章主要介紹了一看就會(huì)的vuex實(shí)現(xiàn)登錄驗(yàn)證(附案例),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
通過實(shí)例解析chrome如何在mac環(huán)境中安裝vue-devtools插件
這篇文章主要介紹了通過實(shí)例解析chrome如何在mac環(huán)境中安裝vue-devtools插件,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
Vue中兩種生成二維碼(帶logo)并下載方式總結(jié)
與后端生成二維碼相比,前端生成二維碼更具有靈活性,下面這篇文章主要給大家介紹了關(guān)于Vue中兩種生成二維碼(帶logo)并下載的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-03-03

