推薦:《vue.js教程》
前言
我用的是vee-validate版本為3.3.7
安裝教程
cnpm install vee-validate --save新建文件vee-validate.js
import { extend, validationobserver, validationprovider, localize } from 'vee-validate'import { required, email, min, between, numeric } from 'vee-validate/dist/rules'import zh_cn from 'vee-validate/dist/locale/zh_cn.json';localize('zh_cn',zh_cn) // 配置中文export default { install (vue) { vue.component('validationobserver', validationobserver) vue.component('validationprovider', validationprovider) extend('required', required) extend('email', email) extend('min', min) extend('between', between) extend('numeric', numeric) extend('phone', { message: '請輸入11位的手機號碼', validate: value => value.length === 11 && /^1[3456789]\\\\d{9}$/.test(value) }) }}main.js 引入 vee-validate.js
import validate from './vee-validate'vue.use(validate)已經(jīng)安裝完成了
使用教程
新建表單
<template> <validationobserver ref="form"> <form @submit.prevent="handleaddaddress"> <!-- 要驗證的輸入框 --> <validationprovider rules="required|phone" v-slot="{ errors }" name="手機號碼"> <input type="text" v-model="phone" /> {{ errors[0] }} <!-- 錯誤信息顯示 --> </validationprovider><button type="submit">確認(rèn)</button> </form> </validationobserver></template>顯示
method處理
methods:{ async checkvalid () { // 是否驗證通過 return this.$refs.form.validate(); }, async handleaddaddress(e){ let check = await this.checkvalid(); if(! check) // 驗證不通過 { let errors = object.values(this.$refs.form.errors); let first_error_index = errors.findindex(val => val.length >= 1); alert(errors[first_error_index][0]) } // 彈出請輸入11位的手機號碼 ...... }
this.$refs.form.validate()是一個promise,當(dāng)然你也可以用then吐槽
2簡單多了,我只是想做個簡單的驗證而已。
3是受到lar啟發(fā),個人感覺真蛋疼,超麻煩的。
每個input都要被validationprovider包裹才能驗證。
(應(yīng)該把input封裝成自定義組件)