VeeValidateでカスタムバリデーションを実装する

こんにちは、フロントエンドエンジニアのてりーです。

Veevalidateに備わっているバリデーション以外のバリデーションを実装する場合はカスタムルールを自作する必要があります。

そもそも備わっているバリデーションは何があるの?

ここに利用可能なルール一覧があります。

https://vee-validate.logaretm.com/v4/v4/guide/global-validators#available-rules

よく使う所だと「email」、「min」、「max」辺りですかね。

カスタムバリデーションの作り方

上記のrule以外を自分で実装する場合はカスタムバリデーションを作る必要があります。

基本形は以下のようになります。

//ルール名 extend(test', {   //引数  params: [   {name: '',}  ],   //エラーメッセージ  message: 'だめよ〜ん',   //バリデーションルール  validate(value, {name}) {   return value !== name;  } });

実例:メールアドレス(サブ)入力時に「メールアドレス(メイン)と同一の値を取れない」を実装する

イメージを掴み為に具体的な実例も見ていきましょう。

extend('emailUnique', {   //メールアドレス(メイン)を受け取る     params: ['target'],     //value(入力値)とメールアドレス(メイン)が一致したらmessageを返す     validate(value, { target }) {       return value !== target     },         //メッセージ     message: 'メールアドレス(A)と同じ値は設定できません。'   })  ```
 <validation-provider           name="メールアドレス(サブ)"           :rules="'email|max_string:100|emailUnique:@メールアドレス(メイン)'"         >

割と簡単に実装できましたね。

以上です。

初めてweb開発の現場に入った時にVue.jsの勉強用に買った本を思い出に添付。