vue-validator 使用详解

博客介绍了自定义配置文件 validateConfig 的使用,需在 main.js 中引入。在页面提交方法里引入进行校验,不通过则中断执行。对于自定义组件,数据变化时 validate 拿不到新数据,需用特定方式指定检测并基于事件触发验证,使用方法控制提示语显示。

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

自定义配置文件(validateConfig):

  


 
  1. import Vue from 'vue'

  2. import VeeValidate, { Validator } from 'vee-validate'

  3.  
  4. const dictionary = {

  5. en: {

  6. messages: {

  7. // <input type="text" v-model="phoneNumber" name="phone" v-validate="'required|phone'">

  8. // 不满足required条件时,显示的提示对应下面的设置

  9. required: (field) => `${field} is necessary!`,

  10. },

  11. attributes: {

  12. // <input type="text" v-model="phoneNumber" name="phone" v-validate="'required|phone'">

  13. // 上述messages提示信息中field显示的内容在此设置,对应标签的name属性

  14. phone: 'Phone Number',

  15. }

  16. }

  17. }

  18.  
  19. // 引用上述设置

  20. Validator.localize(dictionary)

  21.  
  22. // 自定义验证规则,取名为phone, 通过该方式使用v-validate="'required|phone'"

  23. Validator.extend('phone', {

  24. // 验证规则,符合规则通过,否则不通过 (规则为美国电话号码)

  25. validate: (value, ref) => {

  26. return /^(\d3|^\d{3}[.-]?)?\d{3}[.-]?\d{4}$/.test(value)

  27. },

  28. // 提示信息,不符合规则提示语

  29. // <span v-show="errors.has('phone')" class="error-message"> {{ errors.first('phone') }} </span>

  30. getMessage: (field) => 'The ' + field + ' is invalid.'

  31. })

  32.  
  33. // 事件触发规则,在输入框中输入后点击事件触发验证,默认为实时验证

  34. Vue.use(VeeValidate, { events: 'blur' })

 

main.js中引入文件
 import '@/assets/js/validateConfig'

页面使用:


 
  1. <label>Phone Number</label>

  2. <input type="text" v-model="phoneNumber" name="phone" v-validate="'required|phone'">

  3. <span v-show="errors.has('phone')" class="error-message"> {{ errors.first('phone') }} </span>

提交方法中引入,进行校验,不通过中断执行


 
  1. update () {

  2. let result = await this.$validator.validateAll()

  3. if (!result) {

  4. return

  5. }

  6. ....
    }

对自定义的组件(自定义select),数据发生变化,validate拿不到新的数据,需要使用 v-validate:userId="'required|phone'"
指定检测userId,并在触发事件中使用 await this.$validator.validateAll()来对提示语关闭或显示(基于事件触发验证情况)


 
  1. eg:

  2. <my-select :select="users" :value="userId" @input="idChanged"

  3. name="userId" v-validate:userId="'required'"></my-select>

  4. <span v-show="errors.has('userId')" class="error-message"> {{ errors.first('userId') }} </span>

  5.  
  6. idChanged (value) {

  7. this.userId = value

  8. this.$validator.validateAll()

  9. }

  10.  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值