VeeValidate 使用笔记(此文章使用环境VUE+webpack)

本文详细介绍了如何在 Vue 和 webpack 环境下使用 VeeValidate 进行表单验证,包括内置规则、错误处理方法、自定义规则的创建,以及表单提交和多重验证的实现。此外,还展示了如何配置中文提示和创建自定义验证规则,如 'mobile' 和 'length11'。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

VeeValidate 使用笔记


内置规则

after                两时间的先后比较 
alpha_dash    字母、数字、下划线、减号  
alpha_num     字母、数字  
alpha              字母   
before             两时间的先后比较  
between          数值范围比较  
confirmed        需要两个相同的输入值  
date_between 日期范围  
date_format     日期输入格式  
decimal            数值,允许小数  
digits                规定长度的数值  
dimensions      指定像素长宽的图形文件  
email Email      地址  
ext                    指定扩展名的文件   
image               图像类型(mime type)的文件   
in                      指定的选择项(典型运用于选择项:单选、复选等)  
ip                      IP地址  
max                  指定最大长度   
mimes        指定类型(mime type)的文件   
min                指定最小长度   
not_in               指定无效的选择项(典型运用于下拉框)   
numeric            数字(不允许小数点)  
regex                正则表达式  
required            必填项   
size                   限定文件大小,单位kb  
url                     URL地址或者域名


errors的方法:

errors.first('field')         获取关于当前field的第一个错误信息
collect('field')               获取关于当前field的所有错误信息(list)
has('field')            当前filed是否有错误(true/false)
all()                            当前表单所有错误(list)
any()                      当前表单是否有任何错误(true/false)
add(String field, String msg)  添加错误
clear()                清除错误
count()            错误数量
remove(String field)    清除指定filed的所有错误

使用方法

npm intall vee-validate -D

创建validate.js文件并在内部引用(此文件源代码在最后)

import VeeValidate from 'vee-validate';

Vue.use(VeeValidate);

在页面引入 (我的是router/index.js)

import register from '@/components/register/register';

页面使用

<div>
<label class="label" for="email">Email</label>
<p>
<input v-validate="'required|email'"  name="email" type="text" placeholder="Email">
       <span v-show="errors.has('email')">{{ errors.first('email') }}</span>
</p>
</div>
<div>
<label class="label" for="phone">phone</label>
<p>
<input v-validate="'required|mobile'"  name="phone" type="text" placeholder="phone">
       <span v-show="errors.has('mobile')">{{ errors('en') }}</span>
</p>
</div>


自定义规则:
Validator.extend('mobile', {
    messages: {
      en:field => field + '必须是11位手机号码',
    },
    validate: value => {
      return value.length == 11 && /^((13|14|15|17|18)[0-9]{1}\d{8})$/.test(value)
    }
})
结尾附validate.js自己写的案例


form 提交
<form @submit.prevent="validateBeforeSubmit">....</form>
methods: {  
validateBeforeSubmit() {  
this.$validator.validateAll().then(() => {  
alert('From Submitted!');  
}).catch(() => { 
alert('Correct them errors!');
}); 
}  
}



多重验证:v-validate="'required|min:6|max:12'"

========================华丽分割线==========
自己写的案例validate.js源码


import Vue from 'vue'
import VeeValidate, {Validator} from 'vee-validate'
import zh from 'vee-validate/dist/locale/zh_CN';//引入中文文件


// 配置中文
Validator.addLocale(zh);


const config = {
  locale: 'zh_CN'
};


Vue.use(VeeValidate,config);


// 自定义validate  attributes就是 field
const dictionary = {
   zh_CN: {
      messages: {
        email: () => '请输入正确的邮箱格式',
        required: ( field )=> "请输入" + field
      },
      attributes:{
        email:'邮箱',
        password:'密码',
        name: '账号',
        mobile: '手机',
        length11:'长度'
      }
  }
};


Validator.updateDictionary(dictionary);


Validator.extend('mobile', {
  messages: {
    zh_CN:field => field + '必须是11位手机号码',
  },
  validate: value => {
    return value.length == 11 && /^((13|14|15|17|18)[0-9]{1}\d{8})$/.test(value)
  }
});


Validator.extend('length11', {
  messages: {
    zh_CN:field => field + '必须是11位',
  },
  validate: value => {
    return value.length == 11
  }
});




在vue文件中使用


<template>
<div>
<div>
<label class="label">Email</label>
   <p>
       <input v-validate="'required|email'"  name="email" type="text" placeholder="Email">
       <span v-show="errors.has('email')">{{ errors.first('email') }}</span>
       {{errors.has('email')}}
   </p>
</div>
<div>
<label class="label">phone</label>
   <p>
       <input v-validate="'required|mobile'"  name="mobile" type="text" placeholder="mobile">
       {{errors.has('mobile')}}
       <span v-show="errors.has('mobile')">{{ errors.first('mobile') }}</span>
   </p>
</div>
<div>
<label class="label">phone</label>
   <p>
       <input v-validate="'length11'"  name="length11" type="text" placeholder="length11">
       {{errors.has('length11')}}
       <span v-show="errors.has('length11')">{{ errors.first('length11') }}</span>
   </p>
</div>
</div>
</template>



官网链接: http://vee-validate.logaretm.com/






                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值