如何使用 vee-validate 自定义错误提示

VeeValidate 插件自带错误提示语言,但在实际的开发场景中我们常常需要对提示语言进行自定义。

版本

  • Vue 2.5.22
  • vue-validate 2.1.7

编写 DemoForm.vue


<template>
  <div>
    <div>
      <input type="text" v-validate="{required: true, email: true}" data-vv-as="邮箱" name="email">
    </div>
    <div>
      <span>{{ errors.first('email') }}</span>
    </div>
  </div>
</template>
<script>
import Vue from "vue";
import VeeValidate, {Validator} from "vee-validate";
import zh_CN from 'vee-validate/dist/locale/zh_CN';

Vue.use(VeeValidate);
Validator.localize('zh_CN', zh_CN);

/** custom message */
const required = field => `请输入${field}`;
const email = '邮箱格式有误';
const messages = {
  required,
  email,
};

/** custom dictionary */
const dictionary = {
  zh_CN: {
    messages,
  },
};

Validator.localize(dictionary);
export default {
  name: "DemoForm"
};
</script>
  • 通过 data-vv-as 指令标示当前字段的语言名称,比如 email 字段的简体中文名称是邮箱

  • 除了 import 基本的 VeeValidate 外,还需要导入 Validator 用于配置语言

  • 导入对应的语言文件,这里以简体中文为例是 zh_CN

  • 使用 Validator.localize() 设定为 zh_CN

  • 将自定义信息定义在 dictionary,其中第一层是语言,比如:zh_CN zh_TW等;第二层定义语言对象

  • VeeValidate 規定自定义信息对象每个属性的值可以是functionstring。若为 function,则第一个参数为字段的 name 值;若为 string,则可以直接赋值

  • 最后再将定义好的对象 dictionary 传入 Validator.localize()

验证

  • 不允许为空的自定义提示

  • 邮箱地址不合法的自定义提示

参考地址