Vue3表單組件el-form校驗規(guī)則rules屬性示例詳解
前言
在使用 Element UI (現(xiàn)在稱為 Element Plus) 的表單組件 el-form 時,rules 屬性用于定義表單項的校驗規(guī)則。這些規(guī)則可以幫助你確保用戶輸入的數(shù)據(jù)符合預(yù)期的格式和要求。
基本用法
rules 是一個對象,其中每個鍵對應(yīng)一個表單項的字段名,值是一個或多個校驗規(guī)則。常見的校驗規(guī)則包括必填、數(shù)據(jù)類型、最小長度、最大長度、自定義校驗等。
示例代碼
以下是一個包含多個校驗規(guī)則的示例:
<template>
<el-form :model="formData" :rules="rules" ref="form">
<el-form-item label="用戶名" prop="username">
<el-input v-model="formData.username"></el-input>
</el-form-item>
<el-form-item label="郵箱" prop="email">
<el-input v-model="formData.email"></el-input>
</el-form-item>
<el-form-item label="密碼" prop="password">
<el-input type="password" v-model="formData.password"></el-input>
</el-form-item>
<el-button type="primary" @click="submitForm">提交</el-button>
</el-form>
</template>
<script>
export default {
data() {
return {
formData: {
username: '',
email: '',
password: ''
},
rules: {
username: [
{ required: true, message: '用戶名不能為空', trigger: 'blur' },
{ min: 3, max: 15, message: '用戶名長度應(yīng)在3到15個字符之間', trigger: 'blur' }
],
email: [
{ required: true, message: '郵箱不能為空', trigger: 'blur' },
{ type: 'email', message: '請輸入有效的郵箱地址', trigger: 'blur' }
],
password: [
{ required: true, message: '密碼不能為空', trigger: 'blur' },
{ min: 6, max: 20, message: '密碼長度應(yīng)在6到20個字符之間', trigger: 'blur' }
]
}
};
},
methods: {
submitForm() {
this.$refs.form.validate((valid) => {
if (valid) {
console.log('表單提交成功');
} else {
console.log('表單校驗失敗');
return false;
}
});
}
}
};
</script>
校驗規(guī)則詳解
- required: 表示該字段是否為必填項。
- message: 校驗失敗時顯示的錯誤提示信息。
- trigger: 觸發(fā)校驗的時機,常見的值有
'blur'和'change'。 - type: 指定校驗的數(shù)據(jù)類型,如
'string'、'number'、'email'、'url'等。 - min 和 max: 指定字符串長度或數(shù)值的范圍,只在
type為'string'或'number'時有效。 - 自定義校驗函數(shù): 可以通過
validator屬性定義一個自定義的校驗函數(shù)。
自定義校驗函數(shù)示例
有時候內(nèi)置的校驗規(guī)則無法滿足需求,這時可以使用自定義校驗函數(shù):
rules: {
password: [
{ required: true, message: '密碼不能為空', trigger: 'blur' },
{ min: 6, max: 20, message: '密碼長度應(yīng)在6到20個字符之間', trigger: 'blur' },
{ validator: validatePasswordStrength, trigger: 'blur' }
]
}
function validatePasswordStrength(rule, value, callback) {
if (!/\d/.test(value)) {
callback(new Error('密碼必須包含至少一個數(shù)字'));
} else if (!/[a-zA-Z]/.test(value)) {
callback(new Error('密碼必須包含至少一個字母'));
} else {
callback();
}
}
在這個示例中,validatePasswordStrength 函數(shù)被用作自定義校驗函數(shù),確保密碼至少包含一個數(shù)字和一個字母。
附:更多自定義的校驗
例如:再次確認(rèn)密碼的,在data中定義一個const 常量,在rules中引入
1. 在form表單中加入rules,并加上prop=‘’
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="88px">
<el-form-item label="確認(rèn)密碼" prop="confirmPass">
<el-input v-model="form.confirmPass" type="password" auto-complete="on" style="width: 370px;" />
</el-form-item>
...
</el-form>
2.在data中定義一個const 常量
data(){
// 定義規(guī)則 (rule, value, callback)
const confirmPass = (rule, value, callback) => {
if (value) {
if (this.form.newPass !== value) {
callback(new Error('兩次輸入的密碼不一致'))
} else {
callback()
}
} else {
callback(new Error('請再次輸入密碼'))
}
}
...
}
3. 在rules中引入自定義的規(guī)則confirmPass
rules:{
oldPass: [
{ required: true, message: '請輸入舊密碼', trigger: 'blur' }
],
newPass: [
{ required: true, message: '請輸入新密碼', trigger: 'blur' },
{ min: 6, max: 20, message: '長度在 6 到 20 個字符', trigger: 'blur' }
],
confirmPass: [
{ required: true, validator: confirmPass, trigger: 'blur' }
]
...
}總結(jié)
通過合理配置 el-form 中的 rules 屬性,可以實現(xiàn)復(fù)雜的表單校驗邏輯,提升表單的易用性和數(shù)據(jù)的可靠性。根據(jù)具體需求選擇合適的校驗規(guī)則和觸發(fā)時機,是實現(xiàn)高質(zhì)量表單的關(guān)鍵。
到此這篇關(guān)于Vue3表單組件el-form校驗規(guī)則rules屬性的文章就介紹到這了,更多相關(guān)Vue3 el-form校驗規(guī)則rules屬性內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue中的事件修飾符once,prevent,stop,capture,self,passive
這篇文章主要介紹了vue中的事件修飾符once,prevent,stop,capture,self,passive,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-04-04
VUE3中Element table表頭動態(tài)展示合計信息
本文主要介紹了在Vue中實現(xiàn)動態(tài)合計兩個字段并輸出摘要信息的方法,通過使用監(jiān)聽器和深度監(jiān)聽,確保當(dāng)數(shù)據(jù)變化時能正確更新合計結(jié)果,具有一定的參考價值,感興趣的可以了解一下2024-11-11
VUE:vuex 用戶登錄信息的數(shù)據(jù)寫入與獲取方式
今天小編就為大家分享一篇VUE:vuex 用戶登錄信息的數(shù)據(jù)寫入與獲取方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11
vue學(xué)習(xí)之Vue-Router用法實例分析
這篇文章主要介紹了vue學(xué)習(xí)之Vue-Router用法,結(jié)合實例形式分析了Vue-Router路由原理與常見操作技巧,需要的朋友可以參考下2020-01-01

