如何使用 VeeValidate 顯示自訂訊息 ?
VeeValidate 雖然有內建錯誤訊息,但也能自訂自己的錯誤訊息。
Version
Vue 2.5.17
VeeValidate 2.1.2
Introduction
demo.vue
<template> <div> <div> <input v-validate="'required|email'" name="email" type="text"> </div> <div> <span>{{ errors.first('email') }}</span> </div> </div> </template> <script> import Vue from 'vue'; import VeeValidate, { Validator } from 'vee-validate'; import zh_TW from 'vee-validate/dist/locale/zh_TW'; Vue.use(VeeValidate); Validator.localize('zh_TW', zh_TW); const dictionary = { zh_TW: { messages: { required: field => `請輸入 ${field}`, email: 'Email 格式錯誤', }, }, }; Validator.localize(dictionary); export default { name: 'basic-example', }; </script>
14 行
import VeeValidate, { Validator } from 'vee-validate';
除了 import 基本的 VeeValidate
外,還要額外 import Validator
,這是個 named import。
15 行
import zh_TW from 'vee-validate/dist/locale/zh_TW';
將繁體中文的資源檔 import 進來。
19 行
Validator.localize('zh_TW', zh_TW);
使用 Validator.localize()
設定為 zh_TW
。
21 行
const dictionary = { zh_TW: { messages: { required: field => `請輸入 ${field}`, email: 'Email 格式錯誤', }, }, }; Validator.localize(dictionary);
將自訂訊息定義在 dictionary
- 第一層 key 為
語系
,如en
或zh_TW
- 第二層 key 為
messages
- 第三層 key 為 Validation Rules,value 可為 string 或 function
最後再將 dictionary
傳入 Validator.localize()
。
Conclusion
- 由於
語系
與dictionary
都是傳入Validator.localize()
,因此執行順序就很重要,必須要dictionary
最後傳入,才能將自訂訊息蓋掉預設訊息,這是使用 VeeValidate 比較雷的地方
Sample Code
完整的範例可以在我的 ofollow,noindex">GitHub 上找到