Vue3表單組件el-form校驗(yàn)規(guī)則rules屬性示例詳解
前言
在使用 Element UI (現(xiàn)在稱為 Element Plus) 的表單組件 el-form
時(shí),rules
屬性用于定義表單項(xiàng)的校驗(yàn)規(guī)則。這些規(guī)則可以幫助你確保用戶輸入的數(shù)據(jù)符合預(yù)期的格式和要求。
基本用法
rules
是一個(gè)對(duì)象,其中每個(gè)鍵對(duì)應(yīng)一個(gè)表單項(xiàng)的字段名,值是一個(gè)或多個(gè)校驗(yàn)規(guī)則。常見(jiàn)的校驗(yàn)規(guī)則包括必填、數(shù)據(jù)類型、最小長(zhǎng)度、最大長(zhǎng)度、自定義校驗(yàn)等。
示例代碼
以下是一個(gè)包含多個(gè)校驗(yàn)規(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: '用戶名長(zhǎng)度應(yīng)在3到15個(gè)字符之間', trigger: 'blur' } ], email: [ { required: true, message: '郵箱不能為空', trigger: 'blur' }, { type: 'email', message: '請(qǐng)輸入有效的郵箱地址', trigger: 'blur' } ], password: [ { required: true, message: '密碼不能為空', trigger: 'blur' }, { min: 6, max: 20, message: '密碼長(zhǎng)度應(yīng)在6到20個(gè)字符之間', trigger: 'blur' } ] } }; }, methods: { submitForm() { this.$refs.form.validate((valid) => { if (valid) { console.log('表單提交成功'); } else { console.log('表單校驗(yàn)失敗'); return false; } }); } } }; </script>
校驗(yàn)規(guī)則詳解
- required: 表示該字段是否為必填項(xiàng)。
- message: 校驗(yàn)失敗時(shí)顯示的錯(cuò)誤提示信息。
- trigger: 觸發(fā)校驗(yàn)的時(shí)機(jī),常見(jiàn)的值有
'blur'
和'change'
。 - type: 指定校驗(yàn)的數(shù)據(jù)類型,如
'string'
、'number'
、'email'
、'url'
等。 - min 和 max: 指定字符串長(zhǎng)度或數(shù)值的范圍,只在
type
為'string'
或'number'
時(shí)有效。 - 自定義校驗(yàn)函數(shù): 可以通過(guò)
validator
屬性定義一個(gè)自定義的校驗(yàn)函數(shù)。
自定義校驗(yàn)函數(shù)示例
有時(shí)候內(nèi)置的校驗(yàn)規(guī)則無(wú)法滿足需求,這時(shí)可以使用自定義校驗(yàn)函數(shù):
rules: { password: [ { required: true, message: '密碼不能為空', trigger: 'blur' }, { min: 6, max: 20, message: '密碼長(zhǎng)度應(yīng)在6到20個(gè)字符之間', trigger: 'blur' }, { validator: validatePasswordStrength, trigger: 'blur' } ] } function validatePasswordStrength(rule, value, callback) { if (!/\d/.test(value)) { callback(new Error('密碼必須包含至少一個(gè)數(shù)字')); } else if (!/[a-zA-Z]/.test(value)) { callback(new Error('密碼必須包含至少一個(gè)字母')); } else { callback(); } }
在這個(gè)示例中,validatePasswordStrength
函數(shù)被用作自定義校驗(yàn)函數(shù),確保密碼至少包含一個(gè)數(shù)字和一個(gè)字母。
附:更多自定義的校驗(yàn)
例如:再次確認(rèn)密碼的,在data中定義一個(gè)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中定義一個(gè)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('請(qǐng)?jiān)俅屋斎朊艽a')) } } ... }
3. 在rules中引入自定義的規(guī)則confirmPass
rules:{ oldPass: [ { required: true, message: '請(qǐng)輸入舊密碼', trigger: 'blur' } ], newPass: [ { required: true, message: '請(qǐng)輸入新密碼', trigger: 'blur' }, { min: 6, max: 20, message: '長(zhǎng)度在 6 到 20 個(gè)字符', trigger: 'blur' } ], confirmPass: [ { required: true, validator: confirmPass, trigger: 'blur' } ] ... }
總結(jié)
通過(guò)合理配置 el-form
中的 rules
屬性,可以實(shí)現(xiàn)復(fù)雜的表單校驗(yàn)邏輯,提升表單的易用性和數(shù)據(jù)的可靠性。根據(jù)具體需求選擇合適的校驗(yàn)規(guī)則和觸發(fā)時(shí)機(jī),是實(shí)現(xiàn)高質(zhì)量表單的關(guān)鍵。
到此這篇關(guān)于Vue3表單組件el-form校驗(yàn)規(guī)則rules屬性的文章就介紹到這了,更多相關(guān)Vue3 el-form校驗(yàn)規(guī)則rules屬性內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
axios發(fā)送post請(qǐng)求springMVC接收不到參數(shù)的解決方法
下面小編就為大家分享一篇axios發(fā)送post請(qǐng)求springMVC接收不到參數(shù)的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03Vue使用CDN引用項(xiàng)目組件,減少項(xiàng)目體積的步驟
這篇文章主要介紹了Vue使用CDN引用項(xiàng)目組件,減少項(xiàng)目體積的步驟,幫助大家提高項(xiàng)目加載速度,感興趣的朋友可以了解下2020-10-10vue axios基于常見(jiàn)業(yè)務(wù)場(chǎng)景的二次封裝的實(shí)現(xiàn)
這篇文章主要介紹了vue axios基于常見(jiàn)業(yè)務(wù)場(chǎng)景的二次封裝的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09vue中展示、讀取.md?文件的方法(批量引入、自定義代碼塊高亮樣式)
這篇文章主要介紹了vue中展示、讀取.md?文件的方法(批量引入、自定義代碼塊高亮樣式),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05vue中defineProperty和Proxy的區(qū)別詳解
這篇文章主要介紹了vue中defineProperty和Proxy的區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11vue中動(dòng)態(tài)路由加載組件,找不到module問(wèn)題及解決
這篇文章主要介紹了vue中動(dòng)態(tài)路由加載組件,找不到module問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06在Vue中實(shí)現(xiàn)拖拽功能的實(shí)例
Vue實(shí)現(xiàn)拖拽功能的基本原理是監(jiān)聽(tīng)鼠標(biāo)事件,實(shí)時(shí)更新拖拽元素的位置,最后在合適的時(shí)機(jī)停止拖拽并更新元素位置,在Vue中,我們可以通過(guò)綁定相關(guān)事件來(lái)實(shí)現(xiàn)這一功能2025-02-02通過(guò)vue方式實(shí)現(xiàn)二維碼掃碼功能
這篇文章給大家介紹了通過(guò)vue的方式,實(shí)現(xiàn)掃碼功能,實(shí)現(xiàn)步驟分為兩步,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2021-11-11