• vue 表单验证实例


    1.注册

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <!--<script src="src/vue.min.js"></script>
        <script src="src/vue-validator.min.js"></script>-->
        <script src="https://unpkg.com/vue@1.0.26/dist/vue.min.js"></script>
        <script src="https://unpkg.com/vue-validator@2.1.7/dist/vue-validator.min.js"></script>
        <style>
            .red {
                color: red;
            }
            .btn{
                display: inline-block;
                padding: 10px;
                background: orange;
                color: #FFF;
                cursor: pointer;
            }
            .btn:hover{
                background: orangered;
            }
        </style>
    </head>
    <body id="app">
    
    <validator name="validatorMethod">
        <div class="username">
            <label for="">用户名:</label>
            <input type="text" v-model="username" initial="off" v-validate:username="['username']" placeholder="请输入用户名">
            <p class="red" v-show="$validatorMethod.username.noempty">用户名不能为空</p>
            <p class="red" v-show="$validatorMethod.username.username">由数字、26个英文字母或下划线和中文组成的字符串</p>
        </div>
        <div class="password">
            <label for="">密码:</label>
            <input type="password" v-model="password" initial="off" v-validate:password="['integer']" placeholder="请输入密码">
            <p class="red" v-if="$validatorMethod.password.integer">只能是数字</p>
        </div>
        <div class="password">
            <label for="">确认密码:</label>
            <input type="password" v-model="newpassword" initial="off" v-validate:newpassword="{match:matchPassword}" placeholder="请输入确认密码">
            <p class="red" v-if="$validatorMethod.newpassword.match">确认密码和密码不一致</p>
        </div>
        <div><a @click="loginMethods" class="btn">登录</a></div>
    </validator>
    
    </body>
    <script>
        var vue = new Vue({
            el: '#app',
            data: {
                comment:"",
                username: "",
                password: "",
                newpassword:"",
                matchPassword:false
            },
            validators: {
                noempty:function(val){
                    var reg = /^s*$/g, isFlag = true;
                    if(val == "" || reg.test(val)){
                        isFlag = false;
                    }
                    return  isFlag;
                },
                username: function (val) {
                    return /^[A-Za-z0-9_-u4e00-u9fa5]{1,10}$/.test(val);
                },
                integer: function (val) {
                    return /^[1-9]d*$/.test(val);
                },
                match:function (val,result) {
                    return result;
                }
            },
            methods:{
                loginMethods:function () {
                    var self = this;
                    /**
                     * 验证目标表单元素。
                     * true:验证所有
                     */
                    self.$validate(true,function () {
                        /*如果所有条件都是false*/
                        if(!self.$validatorMethod.invalid){
                            alert("登录成功");
                        }
                    })
                }
            },
            computed:{
                matchPassword:function () {
                    return this.password == this.newpassword
                }
            }
        })
    </script>
    </html>
    

    2.同时验证多个情况,也可以把验证码方法写在html 中(个人不建议使用)

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <!--<script src="src/vue.min.js"></script>
        <script src="src/vue-validator.min.js"></script>-->
        <script src="https://unpkg.com/vue@1.0.26/dist/vue.min.js"></script>
        <script src="https://unpkg.com/vue-validator@2.1.7/dist/vue-validator.min.js"></script>
        <style>
            .red {
                color: red;
            }
            .btn{
                display: inline-block;
                padding: 10px;
                background: orange;
                color: #FFF;
                cursor: pointer;
            }
            .btn:hover{
                background: orangered;
            }
        </style>
    </head>
    <body id="app">
    
    <validator name="validatorMethod">
        <div class="username">
            <label for="">用户名:</label>
    <!-- 或者这么写-->
     <!-- <input type="text" v-model="username" initial="off" v-validate:username="{noempty:true,username:true}" placeholder="请输入用户名">-->
            <input type="text" v-model="username" initial="off" v-validate:username="['noempty','username']" placeholder="请输入用户名">
            <p class="red" v-show="$validatorMethod.username.noempty">用户名不能为空</p>
            <p class="red" v-show="$validatorMethod.username.username">由数字、26个英文字母或下划线和中文组成的字符串</p>
        </div>
        <div class="password">
            <label for="">密码:</label>
            <input type="password" v-model="password" initial="off" v-validate:password="{minlength:6,maxlength:20,pattern:'/^d{6,20}$/'}" placeholder="请输入密码">
            <p class="red" v-if="$validatorMethod.password.minlength">密码最低6位数</p>
            <p class="red" v-if="$validatorMethod.password.maxlength">密码最高20位数</p>
            <p class="red" v-if="$validatorMethod.password.pattern">只能是数字</p>
        </div>
        <div><a @click="loginMethods" class="btn">登录</a></div>
    </validator>
    
    </body>
    <script>
        var vue = new Vue({
            el: '#app',
            data: {
                comment:"",
                username: "",
                password: "",
                newpassword:""
            },
            validators: {
                noempty:function(val){
                    var reg = /^s*$/g, isFlag = true;
                    if(val == "" || reg.test(val)){
                        isFlag = false;
                    }
                    return  isFlag;
                },
                username: function (val) {
                    return /^[A-Za-z0-9_-u4e00-u9fa5]{1,10}$/.test(val);
                },
                integer: function (val) {
                    return /^[1-9]d*$/.test(val);
                }
            },
            methods:{
                loginMethods:function () {
                    var self = this;
                    /**
                     * 验证目标表单元素。
                     * true:验证所有
                     */
                    self.$validate(true,function () {
                        /*如果所有条件都是false*/
                        if(!self.$validatorMethod.invalid){
                            alert("登录成功");
                        }
                    })
                }
            }
        })
    </script>
    </html>
    

    3.提交时验证所有表单:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <!--<script src="src/vue.min.js"></script>
        <script src="src/vue-validator.min.js"></script>-->
        <script src="https://unpkg.com/vue@1.0.26/dist/vue.min.js"></script>
        <script src="https://unpkg.com/vue-validator@2.1.7/dist/vue-validator.min.js"></script>
        <style>
            .red {
                color: red;
            }
            .btn{
                display: inline-block;
                padding: 10px;
                background: orange;
                color: #FFF;
                cursor: pointer;
            }
            .btn:hover{
                background: orangered;
            }
        </style>
    </head>
    <body id="app">
    
    <validator name="validatorMethod">
    
        <div class="username">
            <label for="">用户名:</label>
            <input type="text" v-model="username" initial="off" v-validate:username="['username']" placeholder="请输入用户名">
            <p class="red" v-if="$validatorMethod.username.username">由数字、26个英文字母或下划线和中文组成的字符串</p>
        </div>
        <div class="password">
            <label for="">密码:</label>
            <input type="password" v-model="password" initial="off" v-validate:password="['integer']" placeholder="请输入密码">
            <p class="red" v-if="$validatorMethod.password.integer">只能是数字</p>
        </div>
        <div><a @click="loginMethods" class="btn">登录</a></div>
    </validator>
    
    </body>
    <script>
        var vue = new Vue({
            el: '#app',
            data: {
                username: "",
                password: ""
            },
            validators: {
                username: function (val) {
                    return /^[A-Za-z0-9_-u4e00-u9fa5]{1,10}$/.test(val);
                },
                integer: function (val) {
                    return /^[1-9]d*$/.test(val);
                }
            },
            methods:{
                loginMethods:function () {
                    var self = this;
                    /**
                     * 验证目标表单元素。
                     * true:验证所有
                     */
                    self.$validate(true,function () {
                        /*如果所有条件都是false*/
                        if(!self.$validatorMethod.invalid){
                            alert("登录成功");
                        }
                    })
                }
            }
        })
    </script>
    </html>
    

    4.提交时指定表单验证:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <!--<script src="src/vue.min.js"></script>
        <script src="src/vue-validator.min.js"></script>-->
        <script src="https://unpkg.com/vue@1.0.26/dist/vue.min.js"></script>
        <script src="https://unpkg.com/vue-validator@2.1.7/dist/vue-validator.min.js"></script>
        <style>
            .red {
                color: red;
            }
            .btn{
                display: inline-block;
                padding: 10px;
                background: orange;
                color: #FFF;
                cursor: pointer;
            }
            .btn:hover{
                background: orangered;
            }
        </style>
    </head>
    <body id="app">
    
    <validator name="validatorMethod">
    
        <div class="username">
            <label for="">用户名:</label>
            <input type="text" v-model="username" initial="off" v-validate:username="['username']" placeholder="请输入用户名">
            <p class="red" v-if="$validatorMethod.username.username">由数字、26个英文字母或下划线和中文组成的字符串</p>
        </div>
        <div class="password">
            <label for="">密码:</label>
            <input type="password" v-model="password"  placeholder="请输入密码">
            <p class="red" v-if="$validatorMethod.password.integer">只能是数字</p>
        </div>
        <div><a @click="loginMethods" class="btn">登录</a></div>
    </validator>
    
    </body>
    <script>
        var vue = new Vue({
            el: '#app',
            data: {
                username: "",
                password: ""
            },
            validators: {
                username: function (val) {
                    return /^[A-Za-z0-9_-u4e00-u9fa5]{1,10}$/.test(val);
                },
                integer: function (val) {
                    return /^[1-9]d*$/.test(val);
                }
            },
            methods:{
                loginMethods:function () {
                    var self = this;
                    /**
                     * 验证[username]表单元素。
                     */
                    self.$validate('username',function () {
                        /*如果所有条件都是false*/
                        if(!self.$validatorMethod.username.username){
                            alert("登录成功");
                        }
                    })
                }
            }
        })
    </script>
    </html>
    

    5.v-model 是对象类型的参数提交时验证所有表单 :

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <!--<script src="src/vue.min.js"></script>-->
        <!--<script src="src/vue-validator.min.js"></script>-->
        <script src="https://unpkg.com/vue@1.0.26/dist/vue.min.js"></script>
        <script src="https://unpkg.com/vue-validator@2.1.7/dist/vue-validator.min.js"></script>
        <style>
            .red {
                color: red;
            }
            .btn{
                display: inline-block;
                padding: 10px;
                background: orange;
                color: #FFF;
                cursor: pointer;
            }
            .btn:hover{
                background: orangered;
            }
        </style>
    </head>
    <body id="app">
    
    <validator name="validatorMethod">
    
        <div class="username">
            <label for="">用户名:</label>
            <input type="text" v-model="items.username" initial="off" v-validate:username="['username']" placeholder="请输入用户名">
            <p class="red" v-if="$validatorMethod.username.username">由数字、26个英文字母或下划线和中文组成的字符串</p>
        </div>
        <div class="password">
            <label for="">密码:</label>
            <input type="password" v-model="items.password" initial="off" v-validate:password="['integer']" placeholder="请输入密码">
            <p class="red" v-if="$validatorMethod.password.integer">只能是数字</p>
        </div>
        <div><a @click="loginMethods" class="btn">登录</a></div>
    </validator>
    
    </body>
    <script>
        var vue = new Vue({
            el: '#app',
            data: {
               items:{
                   username: "",
                   password: ""
               }
            },
            validators: {
                username: function (val) {
                    return /^[A-Za-z0-9_-u4e00-u9fa5]{1,10}$/.test(val);
                },
                integer: function (val) {
                    return /^[1-9]d*$/.test(val);
                }
            },
            methods:{
                loginMethods:function () {
                    var self = this;
                    /**
                     * 验证目标表单元素。
                     * true:验证所有
                     */
                    self.$validate(true,function () {
                        /*如果所有条件都是false*/
                        if(!self.$validatorMethod.invalid){
                            alert("登录成功");
                        }
                    })
                }
            }
        })
    </script>
    </html>
    

    6.v-model 参数命名是驼峰式提交时验证所有表单:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <!--<script src="src/vue.min.js"></script>-->
        <!--<script src="src/vue-validator.min.js"></script>-->
        <script src="https://unpkg.com/vue@1.0.26/dist/vue.min.js"></script>
        <script src="https://unpkg.com/vue-validator@2.1.7/dist/vue-validator.min.js"></script>
        <style>
            .red {
                color: red;
            }
            .btn{
                display: inline-block;
                padding: 10px;
                background: orange;
                color: #FFF;
                cursor: pointer;
            }
            .btn:hover{
                background: orangered;
            }
        </style>
    </head>
    <body id="app">
    
    <validator name="validatorMethod">
    
        <div class="username">
            <label for="">用户名:</label>
            <input type="text" v-model="items.userName" initial="off" v-validate:user-name="['username']" placeholder="请输入用户名">
            <p class="red" v-if="$validatorMethod.userName.username">由数字、26个英文字母或下划线和中文组成的字符串</p>
        </div>
        <div class="password">
            <label for="">密码:</label>
            <input type="password" v-model="items.passWord" initial="off" v-validate:pass-word="['integer']" placeholder="请输入密码">
            <p class="red" v-if="$validatorMethod.passWord.integer">只能是数字</p>
        </div>
        <div><a @click="loginMethods" class="btn">登录</a></div>
    </validator>
    
    </body>
    <script>
        var vue = new Vue({
            el: '#app',
            data: {
               items:{
                   userName: "",
                   passWord: ""
               }
            },
            validators: {
                username: function (val) {
                    return /^[A-Za-z0-9_-u4e00-u9fa5]{1,10}$/.test(val);
                },
                integer: function (val) {
                    return /^[1-9]d*$/.test(val);
                }
            },
            methods:{
                loginMethods:function () {
                    var self = this;
                    /**
                     * 验证目标表单元素。
                     * true:验证所有
                     */
                    self.$validate(true,function () {
                        /*如果所有条件都是false*/
                        if(!self.$validatorMethod.invalid){
                            alert("登录成功");
                        }
                    })
                }
            }
        })
    </script>
    </html>
    

    .

     
  • 相关阅读:
    [POI2007]山峰和山谷Grz
    [POI2007]驾驶考试egz
    [POI2007]立方体大作战tet
    BZOJ1085 [SCOI2005]骑士精神
    BZOJ1975 [Sdoi2010]魔法猪学院
    codeforces754D Fedor and coupons
    UOJ79 一般图最大匹配
    BZOJ3944 Sum
    BZOJ3434 [Wc2014]时空穿梭
    UOJ58 【WC2013】糖果公园
  • 原文地址:https://www.cnblogs.com/crazycode2/p/7048296.html
Copyright © 2020-2023  润新知