ユーザ用ツール

サイト用ツール


vue_veevalidate

VeeValidate

  • 公式ドキュメント 1)
  • カスタムルールの使用も可能

使用例

  • よく使うバリデーション例

基本

v-validate="{
    required: true, // 必須
    regex: /^[a-zA-Z0-9_\-]*$/ // 正規表現(万能)
}"

文字入力

v-validate="{
    min: 0, // 最小文字数
    max: 100 // 最大文字数
}"

数値入力

v-validate="{
    min_value: 0, // 最小値
    max_value: 100, // 最大値
    decimal: 0, // 小数点の許容範囲っぽい?
    integer: 0 // int型許容?
}"

URL

  • This rule can recieve any args from validator.js isURL validator.とのこと
    • 要はここ参照ということ

オプション

  • require_protocol
    • if set as true isURL will return false if protocol is not present in the URL.
    • 主に使うのはこいつかな?
v-validate="{
    max: 2048, // URLの最大値がこのくらいだとか
    url: {
        required_protocol: true
    }
}"

メソッド内での使用

  • 公式ドキュメント 2)
  • メソッド内でもバリデーションをかけることができる
import { Validator } from 'vee-validate'

const result = await new Validator().verify('test', 'max:3')

if (result.errors.length !== 0) {
  // Error
}
  • 手動でバグを発生させることでビュー側での検知も可能 3)
import { ErrorBag } from 'vee-validate'

new ErrorBag().add({
  field: 'auth',
  msg: 'Wrong Credentials'
})

競合

  • input要素と競合したりするので、工夫が必要
  • 下記のようなコードだと、inputとVeeValidateの2種類でバリデーションがかかってしまう
<b-field>
  <input
    required
    v-validate="{
      required: true
    }"
  >
  <span>
    {{ errors.first('XXX') }}
  </span>
  ...
  ...
  ...
  <input
    required
    v-validate="{
      required: true
    }"
  >
  <span>
    {{ errors.first('XXX') }}
  </span>
</b-field>
  • inputのバリデーションはb-fieldなどで区切られうるため、ラップすると直ったりする
    • 上記の場合だとさらにspanと競合するため、spanの内容はb-fieldのメッセージなどに置換するとうまくいく
1)
『VeeValidate』, https://vee-validate.logaretm.com/v2/, 2021-08-23
2)
『Validator API』, VeeValidate, https://vee-validate.logaretm.com/v2/api/validator.html, 2021-08-23
3)
『ErrorBag』, VeeValidate, https://vee-validate.logaretm.com/v2/api/errorbag.html, 2021-08-23
vue_veevalidate.txt · 最終更新: 2021/08/23 18:55 by 127.0.0.1