vue form check 表單驗(yàn)證的實(shí)現(xiàn)代碼
vue-form-check (基于vue的表單驗(yàn)證)具體實(shí)現(xiàn)代碼如下所述:
安裝
// 安裝 npm i vue-form-check -S
引用
// 引用(eg. 在工程的main.js下) import vueFormCheck from 'vue-form-check' Vue.use(vueFormCheck)
調(diào)用
this.$checkForm(current, config)
@params
current 是當(dāng)前校驗(yàn)對象
config 是校驗(yàn)規(guī)則對象
config.alias 別名
config.type 配置項(xiàng)數(shù)據(jù)類型
config.required 是否必填
config.rule 正則校驗(yàn)
config.depend 先決條件(省事可以在callback里直接判斷,推薦寫,true校驗(yàn)本項(xiàng);false不校驗(yàn)本項(xiàng))
config.callback 靈活校驗(yàn)(rule同時(shí)出現(xiàn),只處理callback,參數(shù)是當(dāng)前值,true校驗(yàn)通過;false校驗(yàn)不通過)
@return object 對象
不通過的話 {alias: '電話', type: 'rule'} alias是配置的別名,type可以是['type'|'required'|'rule']
校驗(yàn)通過的話 {} 空對象
ps. 驗(yàn)證表單可以寫在mixin里,這里簡單處理直接寫在組件里了
Component
// 使用例子
new Vue({
data() {
return {
params: {
id: '1234',
person: {
name: 'jackie',
age: '27',
phone: '18266666666',
home: ['羅湖區(qū)田心村']
}
}
}
},
methods: {
submit() {
//...
console.log('submit success');
},
check() {
let obj = this.$checkForm(this.params, {
id: {
alias: 'id',
type: 'string'
},
// 必填校驗(yàn)
'person.name': {
alias: '學(xué)校',
type: 'string',
required: true
},
// 正則校驗(yàn)
'person.phone': {
alias: '電話',
type: 'string',
rule: /^1[345678][0-9]{9}$/
},
// 靈活校驗(yàn),如數(shù)值、日期區(qū)間驗(yàn)證
'person.age': {
alias: '年齡',
callback(value) {
if (value < 30 && value > 18) {
return true;
}
return false;
}
},
// 先決校驗(yàn),如果電話等于以下,校驗(yàn)地址信息
'person.home': {
alias: '方向',
type: 'array',
required: true,
depend() {
if (this.params.person.phone === '18210517463') {
return true;
}
return false;
}
}
});
const length = Object.keys(obj).length;
if (length === 0) {
return this.submit();
}
switch (obj.type) {
case 'type':
this.$alert(`${obj.alias}的類型定義錯(cuò)誤`, '提示');
break;
case 'required':
this.$alert(`${obj.alias}是必填項(xiàng)`, '提示');
break;
case 'rule':
this.$alert(`${obj.alias}的輸入不符合規(guī)范`, '提示');
break;
default:
break;
}
}
}
});
補(bǔ)充:vue-form表單驗(yàn)證是否為空值
重點(diǎn)部分:
點(diǎn)擊表單的 submit按鈕 觸發(fā)form 部分 @submit=”submit”事件:
submit事件 定義在js部分:
prevent:文檔上說了在事件后面加上 .prevent就可以阻止默認(rèn)事件了。
form @submit.prevent=”submit”
<form @submit.prevent="submit">
<input type="text" v-model="userName" placeholder="請輸入你的姓名" class="name-style" maxlength="20"/>
<div class="sex">
<select v-model="selectedSex">
<option>boy</option>
<option selected = "selected">girl</option>
</select>
</div>
<input type="text" v-model="phoneNumber" placeholder="請輸入你的手機(jī)號(hào)" class="phone-number-style"/>
<div class="guide-style">
<select v-model="selectedGuild">
<option selected="selected" value="">請選擇一個(gè)導(dǎo)購: </option>
<option v-for="guild in guilds" value ="{{ guild.name }}">{{ guild.name }}</option>
</select>
</div>
<input type="submit" value ="注冊" class="register-style"/>
</form>
data () {
return {
userName: '', //請輸入你的姓名
selectedSex: '',//選擇性別
phoneNumber: '',//請輸入你的手機(jī)號(hào)
guilds: [],
selectedGuild: '' ///請選擇一個(gè)導(dǎo)購
}
},
methods: {
//1.重點(diǎn)是這個(gè)方法 submit () {} - form @submit.prevent="submit" -重點(diǎn)是這個(gè)方法 submit () {},
//2.可以在這里向服務(wù)器發(fā)送數(shù)據(jù)
submit () {
if (!this.userName) {
showToast('請輸入姓名!')
return false
}
if (!this.phoneNumber) {
showToast('請輸入手機(jī)號(hào)碼!')
return false
}
if (!checkTel(this.phoneNumber)) {
showToast('手機(jī)號(hào)格式不正確')
return false
}
if (!this.selectedGuild) {
showToast('請選擇導(dǎo)購!')
return false
}
return true
}
}
總結(jié)
以上所述是小編給大家介紹的vue form check 表單驗(yàn)證的實(shí)現(xiàn)代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- vue+element-ui集成隨機(jī)驗(yàn)證碼+用戶名+密碼的form表單驗(yàn)證功能
- vue中使用element-ui進(jìn)行表單驗(yàn)證的實(shí)例代碼
- Vue使用vux-ui自定義表單驗(yàn)證遇到的問題及解決方法
- element 結(jié)合vue 在表單驗(yàn)證時(shí)有值卻提示錯(cuò)誤的解決辦法
- Vue from-validate 表單驗(yàn)證的示例代碼
- Vue ElementUI之Form表單驗(yàn)證遇到的問題
- 詳解vue表單驗(yàn)證組件 v-verify-plugin
- Vue表單驗(yàn)證插件Vue Validator使用方法詳解
- Vue表單驗(yàn)證插件的制作過程
相關(guān)文章
vue-router如何實(shí)時(shí)動(dòng)態(tài)替換路由參數(shù)(地址欄參數(shù))
這篇文章主要介紹了vue-router如何實(shí)時(shí)動(dòng)態(tài)替換路由參數(shù)(地址欄參數(shù)),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
vue router 跳轉(zhuǎn)后回到頂部的實(shí)例
今天小編就為大家分享一篇vue router 跳轉(zhuǎn)后回到頂部的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08
在vue+element-plus中無法同時(shí)使用v-for和v-if的問題及解決方法
由于路由中存在不需要遍歷的數(shù)據(jù)所以像用v-if來過濾,但是報(bào)錯(cuò),百度說vue不能同時(shí)使用v-if和v-for,今天小編給大家分享解決方式,感興趣的朋友跟隨小編一起看看吧2023-07-07
vue如何實(shí)現(xiàn)跨頁面?zhèn)鬟f與接收數(shù)組并賦值
這篇文章主要介紹了vue如何實(shí)現(xiàn)跨頁面?zhèn)鬟f與接收數(shù)組并賦值,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04
Vue包大小優(yōu)化的實(shí)現(xiàn)(從1.72M到94K)
這篇文章主要介紹了Vue包大小優(yōu)化的實(shí)現(xiàn)(從1.72M到94K),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
el-select如何獲取下拉框選中l(wèi)abel和value的值
在開發(fā)業(yè)務(wù)場景中我們通常遇到一些奇怪的需求,例如el-select業(yè)務(wù)場景需要同時(shí)獲取我們選中的label跟 value,下面這篇文章主要給大家介紹了關(guān)于el-select如何獲取下拉框選中l(wèi)abel和value的值,需要的朋友可以參考下2022-10-10

