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)@paramscurrent 是當(dāng)前校驗(yàn)對(duì)象config 是校驗(yàn)規(guī)則對(duì)象config.alias 別名config.type 配置項(xiàng)數(shù)據(jù)類(lèi)型config.required 是否必填config.rule 正則校驗(yàn)config.depend 先決條件(省事可以在callback里直接判斷,推薦寫(xiě),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)通過(guò);false校驗(yàn)不通過(guò))@return object 對(duì)象不通過(guò)的話 {alias: '電話', type: 'rule'} alias是配置的別名,type可以是['type'|'required'|'rule']校驗(yàn)通過(guò)的話 {} 空對(duì)象ps. 驗(yàn)證表單可以寫(xiě)在mixin里,這里簡(jiǎn)單處理直接寫(xiě)在組件里了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}的類(lèi)型定義錯(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部分:
新聞熱點(diǎn)
疑難解答
圖片精選