# Validate.js 表單驗證套件
###### tags: `javascript` `Validate.js` `表單驗證` `js套件`
## [Validate.js](https://validatejs.org/#validate-js) 介紹
### 載入 CDN:
```htmlmixed=
<script src="https://cdnjs.cloudflare.com/ajax/libs/validate.js/0.13.1/validate.min.js"></script>
```
### Constraints (約束條件):
```javascript=
{
<attribute>: {
<validator name>: <validator options>
}
}
```
### 官網範例:
* [範例樣式](https://validatejs.org/examples.html)
```javascript=
var constraints = {
username: {
presence: true,
exclusion: {
within: ["nicklas"],
message: "'%{value}' is not allowed"
}
},
password: {
presence: true,
length: {
minimum: 6,
message: "must be at least 6 characters"
}
}
};
validate({password: "bad"}, constraints);
// => {
// "username": ["Username can't be blank"],
// "password": ["Password must be at least 6 characters"]
// }
```
* validate function
```javascript=
validate(attributes, constraints, [options])
```
## 小練習([CodePen 連結](https://codepen.io/Zoechiueh/pen/BawzOYw?editors=0010))
### 寫法一
* validate(); 執行,直接帶入物件參數(缺點是參數多會很大坨)
```htmlmixed=
<form id="myForm">
<input type="text" class="username" name="username">
<input type="password" name="password">
</form>
```
```javascript=
var constraints = {
username: {
presence: true,
exclusion: {
within: ["nicklas"],
message: "'%{value}' is not allowed"
}
},
password: {
presence: true,
length: {
minimum: 6,
message: "must be at least 6 characters"
}
}
};
// validate(); 執行
// 回傳錯誤訊息
const errors = validate({password: "bad333", username:"123"}, constraints);
console.log(errors);
```
### 寫法二
* 綁元素的 DOM,去取得 name 名稱
```htmlmixed=
<form id="myForm">
<input type="text" class="username" name="username">
<input type="password" name="password">
</form>
```
```javascript=
const form = document.querySelector('#myForm');
const constraints = {
usename: {
presence: true,
},
password: {
presence: true,
}
}
const errors = validate(form, constraints);
console.log(errors);
```
### 改成中文呈現的寫法:
* 元素 DOM 的 name,也要改成 attribute 對應的中文
```htmlmixed=
<form id="myForm">
<input type="text" class="username" name="使用者名稱">
<input type="password" name="使用者密碼">
</form>
```
```javascript=
const form = document.querySelector('#myForm');
const constraints = {
"使用者名稱": {
presence: {
message: "必填"
}
},
"使用者密碼": {
presence: {
message: "必填"
}
}
}
const errors = validate(form, constraints);
console.log(errors);
```
## 常使用的 Validators
* email 信箱
* length 長度(名稱最多幾個字、密碼最多或最少幾個字)
* numericality 數量(大於0 小於10)
* presence 必填
* url 網址 (連結、圖片)
## 實作範例
* [助教範例](https://codepen.io/AliceChiang/pen/MWbBzKo?editors=1011)
* [中文寫法](https://codepen.io/Zoechiueh/pen/GRMjpNe?editors=1010)