---
tags: 筆記
---
# [筆記] Vuelidation
# 語法
## 1. SameAS
```javascript=
validations: {
captchaCode: {
required,
sameAsRandomCode: sameAs(function () { return this.randomCaptcha })
},
passwordConfirm: {
required,
alphaNum,
minLength: minLength(6),
maxLength: maxLength(30),
sameAsPassword: sameAs('password')
}
}
```
# 安裝
```
npm install vuelidate --save
```
# 用法
[用法說明](https://vuelidate.js.org/#sub-basic-usage)
```javascript=
import { required, minLength, between } from 'vuelidate/lib/validators'
export default {
data() {
return {
name: '',
age: 0
}
},
validations: {
name: {
required,
minLength: minLength(4)
},
age: {
between: between(20, 30)
}
}
}
```
```pug
div
.form-group(:class="{ 'form-group--error': $v.name.$error }")
label.form__label Name
input.form__input(v-model.trim="$v.name.$model")
.error(v-if="!$v.name.required") Field is required
.error(v-if="!$v.name.minLength")
| Name must have at least {{$v.name.$params.minLength.min}} letters.
tree-view(:data="$v.name", :options="{rootObjectKey: '$v.name', maxDepth: 2}")
.form-group(:class="{ 'form-group--error': $v.age.$error }")
label.form__label Age
input.form__input(v-model.trim.lazy="$v.age.$model")
.error(v-if="!$v.age.between")
| Must be between {{$v.age.$params.between.min}} and {{$v.age.$params.between.max}}
span(tabindex="0") Blur to see changes
tree-view(:data="$v.age", :options="{rootObjectKey: '$v.age', maxDepth: 2}")
```