vue中vee validate表單校驗(yàn)的幾種基本使用
今天主要記錄一下用vee-validate來(lái)進(jìn)行表單校驗(yàn)的幾個(gè)基本使用。包括最基礎(chǔ)的必填和長(zhǎng)度校驗(yàn);異步請(qǐng)求服務(wù)的校驗(yàn)(重名校驗(yàn)),還有延遲校驗(yàn)。如何引入等就不在這里贅述了,直接進(jìn)入主題。
1.必填和長(zhǎng)度校驗(yàn)
直接采用v-validate屬性進(jìn)行配置,不同的校驗(yàn)采用 ‘|' 隔開(kāi)。是否有報(bào)錯(cuò)根據(jù) errors.has('userName') 進(jìn)行判斷,‘userName'對(duì)應(yīng)的是表單的name屬性的值。
errors.first('userName)會(huì)展示表單校驗(yàn)中第一個(gè)錯(cuò)誤信息。
<el-col :span="4" class="form-label">
<label>用戶名</label>
</el-col>
<el-col :span="8">
<el-input name="userName" v-model="userName" v-validate="'required|min:2|max:20'"></el-input>
<span v-show="errors.has('userName')" class="error">{{ errors.first('userName') }}</span>
</el-col>
結(jié)果如下:

從結(jié)果我們可以看到,校驗(yàn)的錯(cuò)誤信息是展示了,但是默認(rèn)都是英文的,這個(gè)可能有時(shí)跟我們實(shí)際開(kāi)發(fā)的需求不是一致的。這個(gè)我們可以采用
vee-validate的國(guó)際化去進(jìn)行中文的展示。但是這里我要介紹的是另一種方式,如果是系統(tǒng)只需要支持一種語(yǔ)言,我覺(jué)得用這種方式就可以。
直接采用 errors.first('userName:required') 即 ‘字段名:校驗(yàn)規(guī)則' 的方式進(jìn)行判斷進(jìn)而展示對(duì)應(yīng)提示信息的方式。這個(gè)方式可以讓表單在對(duì)應(yīng)校驗(yàn)不通過(guò)時(shí)展示我們自己定義對(duì)應(yīng)的個(gè)性化提示信息。
優(yōu)點(diǎn)是:配置簡(jiǎn)單,方便實(shí)現(xiàn)個(gè)性化提示。
<el-col :span="4" class="form-label">
<label>用戶名</label>
</el-col>
<el-col :span="8">
<el-input name="userName" v-model="userName" v-validate="'required|min:2|max:20'"></el-input>
<span v-show="errors.first('userName:required')" class="error">用戶名為必填項(xiàng)</span>
<span v-show="errors.first('userName:min')" class="error">用戶名的最小長(zhǎng)度為2</span>
<span v-show="errors.first('userName:max')" class="error">用戶名的最大長(zhǎng)度為20</span>
</el-col>
2.異步校驗(yàn) 和延遲
異步校驗(yàn),主要就是兩部分,一個(gè)是校驗(yàn)器的定義,一個(gè)是使用
定義部分:
import { Validator } from 'vee-validate';
const emailsDB = [
'abcd@cc.com'
];
const isUnique = value => new Promise((resolve) => {
setTimeout(() => {
if (emailsDB.indexOf(value) === -1) {
return resolve({
valid: true
});
}
return resolve({
valid: false,
data: {
message: `${value} 已存在.`
}
});
}, 200);
});
Validator.extend('unique', {
validate: isUnique,
getMessage: (field, params, data) => data.message
});
使用:
<el-col :span="4" class="form-label">
<label>郵箱</label>
</el-col>
<el-col :span="8">
<el-input name="email" v-model="email" v-validate="'unique'" data-vv-delay="1000"></el-input>
<span v-show="errors.first('email:unique')" class="error">重復(fù)</span>
</el-col>
結(jié)果:

其中 data-vv-delay="1000" 就是延遲校驗(yàn)的使用。1000即1000毫秒
以下是幾個(gè)例子的完整代碼:
<template>
<div>
<el-form name="myForm" novalidate>
<el-row>
<el-col :span="4" class="form-label">
<label>郵箱</label>
</el-col>
<el-col :span="8">
<el-input name="email" v-model="email" v-validate="'unique'" data-vv-delay="1000"></el-input>
<span v-show="errors.first('email:unique')" class="error">重復(fù)</span>
</el-col>
<el-col :span="4" class="form-label">
<label>用戶名</label>
</el-col>
<el-col :span="8">
<el-input name="userName" v-model="userName" v-validate="'required|min:2|max:20'"></el-input>
<span v-show="errors.first('userName:required')" class="error">用戶名為必填項(xiàng)</span>
<span v-show="errors.first('userName:min')" class="error">用戶名的最小長(zhǎng)度為2</span>
<span v-show="errors.first('userName:max')" class="error">用戶名的最大長(zhǎng)度為20</span>
</el-col>
<!-- <el-col :span="8">
<el-input name="userName" v-model="userName" v-validate="'required|min:2|max:20'"></el-input>
<span v-show="errors.has('userName')" class="error">{{ errors.first('userName') }}</span>
</el-col> -->
</el-row>
</el-form>
</div>
</template>
<script>
import { Validator } from 'vee-validate';
const emailsDB = [
'abcd@cc.com'
];
const isUnique = value => new Promise((resolve) => {
setTimeout(() => {
if (emailsDB.indexOf(value) === -1) {
return resolve({
valid: true
});
}
return resolve({
valid: false,
data: {
message: `${value} 已存在.`
}
});
}, 200);
});
Validator.extend('unique', {
validate: isUnique,
getMessage: (field, params, data) => data.message
});
export default {
data() {
return {
email: '',
userName: ''
}
}
}
</script>
<style scoped>
.form-label {
text-align: right;
padding-right: 10px;
}
.error {
color: red;
}
</style>
總結(jié)
以上所述是小編給大家介紹的vue中vee validate表單校驗(yàn)的幾種基本使用,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- 使用validate.js實(shí)現(xiàn)表單數(shù)據(jù)提交前的驗(yàn)證方法
- EasyValidate優(yōu)雅地校驗(yàn)提交數(shù)據(jù)完整性
- Struts2中validate數(shù)據(jù)校驗(yàn)的兩種方法詳解附Struts2常用校驗(yàn)器
- Vee-validate 父組件獲取子組件表單校驗(yàn)結(jié)果的實(shí)例代碼
- Vue.js + Nuxt.js 項(xiàng)目中使用 Vee-validate 表單校驗(yàn)
- validate?注冊(cè)頁(yè)的表單數(shù)據(jù)校驗(yàn)實(shí)現(xiàn)詳解
相關(guān)文章
vue中v-bind和v-model的區(qū)別及說(shuō)明
這篇文章主要介紹了vue中v-bind和v-model的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
vue-quill-editor富文本編輯器簡(jiǎn)單使用方法
這篇文章主要為大家詳細(xì)介紹了vue-quill-editor富文本編輯器簡(jiǎn)單使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09
Vue如何通過(guò)瀏覽器控制臺(tái)查看全局data值
在寫vue項(xiàng)目時(shí)想到一個(gè)問(wèn)題,項(xiàng)目里面的文件都是一個(gè)個(gè)的組件,如何在控制臺(tái)中修改,查看組件data里的值呢,下面這篇文章主要給大家介紹了關(guān)于Vue如何通過(guò)瀏覽器控制臺(tái)查看全局data值的相關(guān)資料,需要的朋友可以參考下2023-04-04
前端實(shí)現(xiàn)簡(jiǎn)單的sse封裝方式(React hook Vue3)
這篇文章主要介紹了前端實(shí)現(xiàn)簡(jiǎn)單的sse封裝方式(React hook Vue3),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
vue.js實(shí)現(xiàn)簡(jiǎn)單計(jì)時(shí)器功能
這篇文章主要為大家詳細(xì)介紹了vue.js實(shí)現(xiàn)簡(jiǎn)單計(jì)時(shí)器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
vue實(shí)現(xiàn)excel文件的導(dǎo)入和讀取完整步驟
Vue的數(shù)據(jù)綁定功能非常強(qiáng)大,很適合用來(lái)讀取Excel內(nèi)容,這篇文章主要給大家介紹了關(guān)于vue實(shí)現(xiàn)excel文件的導(dǎo)入和讀取的相關(guān)資料,文中通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10
Vue包大小優(yōu)化的實(shí)現(xiàn)(從1.72M到94K)
這篇文章主要介紹了Vue包大小優(yōu)化的實(shí)現(xiàn)(從1.72M到94K),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02

