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