---
tags: Vue 3 VeeValidation 驗證
---
# 使用 CDN 來載入 Vee-validate
>使用CLI來匯入的Vee-validate[連結](https://hackmd.io/fSDVyMA2Q5yl591nOLNkVA?view)

## 步驟一:載入CDN
```htmlembedded=
<!-- 載入CDN -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/vee-validate/4.1.17/vee-validate.min.js"></script>
<script type="module"></script>
```
## 步驟二:綁定components
```javascript=
console.log(VeeValidate); // 查看VeeValidate資料
const app = Vue.createApp({
components: {
VForm: VeeValidate.Form,
VField: VeeValidate.Field,
VErrorMessage: VeeValidate.ErrorMessage,
},
});
app.mount('#app');
```
## 步驟三&步驟四:
* 把原本html屬性改成components屬性
* v-form 加上 v-solt 把資料傳到外部
```htmlembedded=
<!-- 原本寫法: -->
<form @submit.preventDefault="onSubmit">
<input type="text" placeholder="userName">
</form>
<!-- 改寫: -->
<v-form @submit.preventDefault="onSubmit" v-slot="{ errors }">
{{ errors }}
<v-field name="userName" type="text" placeholder="userName" ></v-field>
</v-form>
```
## 步驟五:
* v-field 加上rules(規則)來綁定方法
* 當方法不等於value(意思是指:沒有輸入值),就會傳請輸入內容,相反則回傳true(意思指:不會傳任何文字到畫面上)
```htmlembedded=
<v-field name="userName" type="text" placeholder="userName" :rules="isRequired"></v-field>
```
```javascript=
methods: {
isRequired(value){
if(!value){
console.log(VeeValidate);
return '請輸入內容';
}
return true;
},
},
```
## 步驟六:
* v-field & v-error-message 所綁定的 name 名稱要互相對應
```htmlembedded=
<v-field name="userName" type="text" placeholder="userName" ></v-field>
<v-error-message name="userName">請填寫名稱</v-error-message>
<v-field name="userEmail" type="text" placeholder="userEmail" :rules="isRequired"></v-field>
<v-error-message name="userEmail">請填寫EMAIL</v-error-message>
```
## 步驟七:
* onSubmit 會與 isRequired 做對應,當如果尚未輸入值直接按送出,isRequired也會跟著被觸發,但 onSubmit不會被觸發;直到輸入值之後 isRequired 會再次被觸發(觸發:return true) 且 onSubmit 也會被觸發。
```htmlembedded=
<v-form @submit.preventDefault="onSubmit" v-slot="{ errors }">
{{ errors }}
<v-field name="userName" type="text" placeholder="userName" :rules="isRequired"></v-field>
<v-error-message name="userName">請填寫名稱</v-error-message>
<v-field name="userEmail" type="text" placeholder="userEmail" :rules="isRequired"></v-field>
<v-error-message name="userEmail">請填寫EMAIL</v-error-message>
<button>送出</button>
</v-form>
```
```javascript=
methods: {
onSubmit(value) {
console.log(value)
},
isRequired(value){
if(!value){
console.log(VeeValidate);
return '請輸入內容';
}
return true;
},
},
```