美文网首页
vantUI表单验证

vantUI表单验证

作者: 安北分享 | 来源:发表于2021-11-11 17:48 被阅读0次

    前言

    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>
    

    相关文章

      网友评论

          本文标题:vantUI表单验证

          本文链接:https://www.haomeiwen.com/subject/bwdizltx.html