vue form check 表單驗證的實現(xiàn)代碼
vue-form-check (基于vue的表單驗證)具體實現(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)前校驗對象 config 是校驗規(guī)則對象 config.alias 別名 config.type 配置項數(shù)據(jù)類型 config.required 是否必填 config.rule 正則校驗 config.depend 先決條件(省事可以在callback里直接判斷,推薦寫,true校驗本項;false不校驗本項) config.callback 靈活校驗(rule同時出現(xiàn),只處理callback,參數(shù)是當(dāng)前值,true校驗通過;false校驗不通過) @return object 對象 不通過的話 {alias: '電話', type: 'rule'} alias是配置的別名,type可以是['type'|'required'|'rule'] 校驗通過的話 {} 空對象 ps. 驗證表單可以寫在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' }, // 必填校驗 'person.name': { alias: '學(xué)校', type: 'string', required: true }, // 正則校驗 'person.phone': { alias: '電話', type: 'string', rule: /^1[345678][0-9]{9}$/ }, // 靈活校驗,如數(shù)值、日期區(qū)間驗證 'person.age': { alias: '年齡', callback(value) { if (value < 30 && value > 18) { return true; } return false; } }, // 先決校驗,如果電話等于以下,校驗地址信息 '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}的類型定義錯誤`, '提示'); break; case 'required': this.$alert(`${obj.alias}是必填項`, '提示'); break; case 'rule': this.$alert(`${obj.alias}的輸入不符合規(guī)范`, '提示'); break; default: break; } } } });
補充:vue-form表單驗證是否為空值
重點部分:
點擊表單的 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="請輸入你的手機號" class="phone-number-style"/> <div class="guide-style"> <select v-model="selectedGuild"> <option selected="selected" value="">請選擇一個導(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: '',//請輸入你的手機號 guilds: [], selectedGuild: '' ///請選擇一個導(dǎo)購 } }, methods: { //1.重點是這個方法 submit () {} - form @submit.prevent="submit" -重點是這個方法 submit () {}, //2.可以在這里向服務(wù)器發(fā)送數(shù)據(jù) submit () { if (!this.userName) { showToast('請輸入姓名!') return false } if (!this.phoneNumber) { showToast('請輸入手機號碼!') return false } if (!checkTel(this.phoneNumber)) { showToast('手機號格式不正確') return false } if (!this.selectedGuild) { showToast('請選擇導(dǎo)購!') return false } return true } }
總結(jié)
以上所述是小編給大家介紹的vue form check 表單驗證的實現(xiàn)代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
vue-router如何實時動態(tài)替換路由參數(shù)(地址欄參數(shù))
這篇文章主要介紹了vue-router如何實時動態(tài)替換路由參數(shù)(地址欄參數(shù)),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09在vue+element-plus中無法同時使用v-for和v-if的問題及解決方法
由于路由中存在不需要遍歷的數(shù)據(jù)所以像用v-if來過濾,但是報錯,百度說vue不能同時使用v-if和v-for,今天小編給大家分享解決方式,感興趣的朋友跟隨小編一起看看吧2023-07-07vue如何實現(xiàn)跨頁面?zhèn)鬟f與接收數(shù)組并賦值
這篇文章主要介紹了vue如何實現(xiàn)跨頁面?zhèn)鬟f與接收數(shù)組并賦值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-04-04Vue包大小優(yōu)化的實現(xiàn)(從1.72M到94K)
這篇文章主要介紹了Vue包大小優(yōu)化的實現(xiàn)(從1.72M到94K),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02el-select如何獲取下拉框選中l(wèi)abel和value的值
在開發(fā)業(yè)務(wù)場景中我們通常遇到一些奇怪的需求,例如el-select業(yè)務(wù)場景需要同時獲取我們選中的label跟 value,下面這篇文章主要給大家介紹了關(guān)于el-select如何獲取下拉框選中l(wèi)abel和value的值,需要的朋友可以參考下2022-10-10