Vant表單驗證的使用


**

前言

**
vant表單驗證在移動端開發中是必不可少的,鑒於自身對該模塊不了解,特此寫一篇筆記來記錄我的使用方法。
**

一、使用場景

**
常用於form表單中輸入框組件的校驗
**

二、使用方法

**
1. 表單校驗
1.1 用 van-form 包住
1.2 在 van-field 上要有 v-model=“變量” 和 綁定rules屬性 :rules=“rules變量”

rules變量:[
    {
    // 是否必填
    required:true,
    message:錯誤信息,
    trigger:"onBlur/onChange"},
    {
    // 自定義表單校驗
    validator: value => {
        // true:驗證通過
        // false:驗證不通過
        return boolean值
    },message:"錯誤信息",
    trigger:"onBlur/onChange"
    }
  ]

**

2. 全局表單驗證

**
2.1 在 van-form 中定義ref屬性 ref=“xxx”
2.2 在觸發對應事件的函數中寫入以下代碼

this.$refs.xxx.validate().then(()=>{
    // 驗證通過
    }).catch(()=>{
    //驗證失敗
    })

**

## 3. 局部表單驗證

**
3.1 在 van-form 中定義ref屬性 ref=“xxx”
3.2 在需要驗證的項的 van-field上加上 name值 name=“ooo”
3.3 在觸發對應事件的函數中寫入以下代碼

this.$refs.xxx.validate("name的值").then(()=>{
    // 驗證通過
    }).catch(()=>{
    //驗證失敗
    })

**

三、完整示例代碼

**

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <title>vant表單驗證</title>
</head>

<body>
    <div id="app">
        <van-form ref='form'>
            <!-- 手機號碼 -->
            <van-field label="手機號碼:" v-model='mobile' placeholder="請輸入手機號碼" :rules="telRules" name="mobile"></van-field>
            <!-- 驗證碼 -->
            <van-field label="驗證碼" v-model="code" placeholder="請輸入驗證碼" :rules="codeRules">
                <!-- 通過 button 插槽可以在輸入框尾部插入按鈕 -->
                <template #button>
                    <!-- 這里有bug,使用<van-button>無法進行局部表單驗證 -->
                    <!-- <van-button size="small" type="primary" @click="getCode">發送驗證碼</van-button> -->
                    <div class="button" @click="getCode">發送驗證碼</div>
                </template>
            </van-field>
            <van-button type="primary" block @click="submit">提交</van-button>
        </van-form>
    </div>

    <!-- 引入樣式文件 -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/vant@2.12/lib/index.css" />
    <!-- 引入 Vue 和 Vant 的 JS 文件 -->
    <script src="https://cdn.jsdelivr.net/npm/vue@2.6/dist/vue.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/vant@2.12/lib/vant.min.js"></script>
    <script>
        // 在 #app 標簽下渲染一個按鈕組件
        new Vue({
            el: '#app',
            data: {
                mobile: '', // 手機號碼
                code: '', // 驗證碼
                // 校驗手機號碼
                telRules: [{
                    required: true,
                    message: '手機號碼不能為空',
                    trigger: 'onBlur'
                }, {
                    // 自定義校驗規則
                    validator: value => {
                        return /^(0|86|17951)?(13[0-9]|15[012356789]|166|17[3678]|18[0-9]|14[57])[0-9]{8}$/
                            .test(value)
                    },
                    message: '請輸入正確格式的手機號碼',
                    trigger: 'onBlur'
                }],
                codeRules: [{
                    required: true,
                    message: '驗證碼不能為空',
                    trigger: 'onBlur'
                }]
            },
            methods: {
                getCode() {
                    // 局部表單驗證
                    this.$refs.form.validate('mobile').then(() => {
                        this.$toast.success('驗證碼獲取成功')
                    }).catch(() => {
                        this.$toast.fail('驗證碼獲取失敗')
                    })
                },
                submit() {
                    // 全局表單驗證
                    this.$refs.form.validate().then(() => {
                        this.$toast.success('提交成功')
                    }).catch(() => {
                        this.$toast.fail('提交失敗')
                    })
                }
            }
        });
    </script>
</body>
</html>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM