zoukankan      html  css  js  c++  java
  • python测试开发django154.bootstrapformvalidation 上海

    前言

    表单输入框对输入内容校验,这是一个很基本的功能,像这种非常普遍的功能,当然是先找下有没有现成的插件可以使用。
    这里介绍一款很好用的表单验证插件,formvalidation,实际上也是bootstrap的一个插件,之前叫bootstrapValidator,现在独立出来了。
    官网:http://formvalidation.io/

    formvalidation下载与使用

    formvalidation官网最新版是需要收费的,当然我知道小伙伴们跟我一样是不愿意去花这个钱的,所以我这里找了一个早期的免费版可以用。
    下载地址http://down.htmleaf.com/1505/201505101833.zip
    下载后解压,主要会用到vendor和dist里面的文件,里面也有一些案例可以学习

    在本地引用的时候需要引用一个formValidation.min.css资源和5个js资源

    <head>
        <link href="/static/bootstarp/css/bootstrap.min.css" rel="stylesheet">
        <link href="/static/bootstrap-formvalidation/dist/css/formValidation.min.css" rel="stylesheet">
        <script src="/static/bootstarp/jquery/jquery3.2.1.js"></script>
        <script src="/static/bootstarp/js/bootstrap.min.js"></script>
        <!-- 引入5个相关 js -->
        <script type="text/javascript" src="/static/bootstrap-formvalidation/vendor/jquery/jquery.min.js"></script>
        <script type="text/javascript" src="/static/bootstrap-formvalidation/vendor/bootstrap/js/bootstrap.min.js"></script>
        <script type="text/javascript" src="/static/bootstrap-formvalidation/dist/js/formValidation.js"></script>
        <script type="text/javascript" src="/static/bootstrap-formvalidation/dist/js/framework/bootstrap.js"></script>
        <script type="text/javascript" src="/static/bootstrap-formvalidation/dist/js/language/zh_CN.js"></script>
    </head>
    

    需要注意的是,虽然前面已经在项目中导入了bootstrap.js,还是需要再导入formvalidation的bootstrap.js文件,因为它和你之前导入的并不相同。
    还有前面导入了jquery.min.js,还是要导入formvalidation里面的jquery.min.js,因为如果不导入,可能会导致remote类型的验证失效。

    使用示例

    写一个登录表单,校验用户名,密码和邮箱格式

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <link href="/static/bootstarp/css/bootstrap.min.css" rel="stylesheet">
        <link href="/static/bootstrap-formvalidation/dist/css/formValidation.min.css" rel="stylesheet">
        <script src="/static/bootstarp/jquery/jquery3.2.1.js"></script>
        <script src="/static/bootstarp/js/bootstrap.min.js"></script>
        <!-- 引入5个相关 js -->
        <script type="text/javascript" src="/static/bootstrap-formvalidation/vendor/jquery/jquery.min.js"></script>
        <script type="text/javascript" src="/static/bootstrap-formvalidation/vendor/bootstrap/js/bootstrap.min.js"></script>
        <script type="text/javascript" src="/static/bootstrap-formvalidation/dist/js/formValidation.js"></script>
        <script type="text/javascript" src="/static/bootstrap-formvalidation/dist/js/framework/bootstrap.js"></script>
        <script type="text/javascript" src="/static/bootstrap-formvalidation/dist/js/language/zh_CN.js"></script>
    </head>
    <body>
    
    <div class="container">
        <div class="row">
            <div class="col-md-6">
                <form id="login-form" action="" method="post">
                    <div class="form-group form-group-lg">
                        <label for="user">用户名</label>
                        <input type="text" class="form-control" id="user" name="user" placeholder="输入用户名">
                    </div>
                    <div class="form-group form-group-lg">
                        <label for="password">密码</label>
                        <input type="password" class="form-control" id="password" name="password" placeholder="输入密码">
                    </div>
                    <div class="form-group form-group-lg">
                        <label for="email">邮箱</label>
                        <input type="email" class="form-control" id="email" name="email" placeholder="输入邮箱">
                    </div>
                    <div class="form-group form-group-lg ">
                        <input type="submit" class="btn btn-info form-control" value="提交">
                    </div>
                </form>
            </div>
    
        </div>
    </div>
    </body>
    </html>
    

    校验器

    <script>
        // 校验器
    $(function() {
        $('#login-form').formValidation({
            message : 'This value is not valid',
            icon : {
                valid : 'glyphicon glyphicon-ok',
                invalid : 'glyphicon glyphicon-remove',
                validating : 'glyphicon glyphicon-refresh'
            },
            fields : {
                user: {
                    message : '用户名校验不通过',
                    validators : {
                        notEmpty : {
                            message : '不能为空'
                        },
                        stringLength: {
                            min: 3,
                            max: 10,
                            message: '用户名3-10位字符' },
                        regexp: {
                            regexp: /^[a-zA-Z0-9_\.]+$/,
                            message: '用户名不能有特殊字符'
                        }
                    /*
                     * stringLength: { min: 6, max: 30, message: 'The username must
                     * be more than 6 and less than 30 characters long' },
                     */
                    /*
                     * remote: { url: 'remote.php', message: 'The username is not
                     * available' },
                     */
                    /*
                     * regexp: { regexp: /^[a-zA-Z0-9_\.]+$/, message: 'The username
                     * can only consist of alphabetical, number, dot and underscore' }
                     */
                    }
                },
                password : {
                    validators : {
                        notEmpty : {
                            message : '不能为空'
                        },
                        stringLength: {
                            min: 6,
                            max: 16,
                            message: '用户名6-16位字符' },
                        regexp: {
                            regexp: /^[a-zA-Z0-9_\.]+$/,
                            message: '用户名不能有特殊字符'
                        }
                    }
                },
                email : {
                    validators : {
                        notEmpty : {
                            message : '不能为空'
                        },
                        emailAddress: {
                                    message: '邮箱格式不合法'
                                }
                    }
                }
            }
        })
    });
    </script>
    

    显示效果

    常用的校验方式validators

    校验不为空

    notEmpty: {
                 message: 'The username is required and can\'t be empty'
             }
    

    校验字符串长度

    stringLength: {
                    min: 6,
                    max: 30,
                    message: 'The username must be more than 6 and less than 30 characters long'
               }
    

    正则校验

    regexp: {
              regexp: /^[a-zA-Z0-9_\.]+$/,
              message: 'The username can only consist of alphabetical, number, dot and underscore'
            }
    

    校验邮箱格式

     emailAddress: {
                    message: 'The input is not a valid email address'
                 }
    

    校验手机号

    phone:{
            message: '不是合法电话',
            country:'CN'
        }
    

    校验网页url地址

    uri: {
          message: 'The input is not a valid URL'
          }
    

    校验整数,也是通过正则校验

    regexp: {
             regexp: /^([0-9][0-9]*)$/,
             message: '必须为整数'
            }
    

    数字校验

    age: {
          validators: {
                 notEmpty: {},
                 digits: {},
                 greaterThan: {
                           value: 18
                         },
                 lessThan: {
                        value: 100
                         }
                 }
        },
    

    校验日期

    date: {
            format: 'YYYY-MM-DD hh:mm:ss',
             message : '不是合法的日期'
          }
    

    密码二次确认校验

    修改密码的时候,一般会二次确认校验密码

    <div class="form-group form-group-lg">
         <label for="password">新密码</label>
         <input type="password" class="form-control" id="password" name="password" placeholder="输入密码">
    </div>
    <div class="form-group form-group-lg">
         <label for="password2">重复密码</label>
         <input type="password" class="form-control" id="password2" name="password2" placeholder="输入密码">
    </div>
    

    校验两次密码一样,使用identical关联field字段

    password : {
                    validators : {
                        notEmpty : {
                            message : '不能为空'
                        },
                        stringLength: {
                            min: 6,
                            max: 16,
                            message: '用户名6-16位字符' },
                        regexp: {
                            regexp: /^[a-zA-Z0-9_\.]+$/,
                            message: '用户名不能有特殊字符'
                        }
                    }
                },
                password2 : {
                    validators : {
                        notEmpty : {
                            message : '不能为空'
                        },
                        identical:{
                           field: 'password',
                           message : '两次密码输入不一致'
                        }
                    }
                },
    

    显示效果

    remote远程校验

    在注册的时候,需要校验用户名是否合法,这时候会用到 remote 校验

    fields : {
                user: {
                    message : '用户名校验不通过',
                    validators : {
                        notEmpty : {
                            message : '不能为空'
                        },
                        stringLength: {
                            min: 3,
                            max: 10,
                            message: '用户名3-10位字符' },
                        regexp: {
                            regexp: /^[a-zA-Z0-9_\.]+$/,
                            message: '用户名不能有特殊字符'
                        },
                        remote: {
                                    type: 'get',
                                    url: '/validate/user',
                                    message: '账号已被使用',
                                    delay: 1000  //延迟一秒
                                }
                    }
                }
    }
    

    输入账号后,延迟一秒会发请求校验,请求参数会在问号后面带上

    GET http://localhost:8000/validate/user?user=admin 
    

    后端写个接口查询数据库,返回json格式:{"valid": False}{"valid": True}

    def validate_user(request):
        user = request.GET.get("user")
        # 判断是否存在
        if user == "yoyo":
            return JsonResponse({"valid": False})
        else:
            return JsonResponse({"valid": True})
    

    校验不通过显示效果

    校验通过

    提交数据

    点提交按钮会触发submit方法提交表单,我们也可以自定义ajax提交

    <script>
    //点提交的时候校验
    $('[type="submit"]').click(function(e) {
        // Prevent form submission 阻止默认的submit方法,用ajax提交
        e.preventDefault();
        var $form = $("#login-form"); // The form instance
        var bv = $form.data('formValidation');  // FormValidation instance
        bv.validate();
        // 判断校验通过
        if(bv.isValid()){
            // Do whatever you want here ...
            $.ajax({
                type:'post',
                url:'/page',
                data: $('#login-form').serialize(),
                dataType:'json',
                success: function(data){
                    if(data.code == 0){
                        console.log("提交成功");
                        // 重定向到首页
                        location.href="/index";
                    }else{
                        alert("提交失败");
                    }
                },
                error: function (jqXHR, textStatus, e) {
                        alert("提交异常:"+e);
                    }
    
            });
        }
    });
    </script>
    
  • 相关阅读:
    java 深入理解jvm内存模型 jvm学习笔记
    java实体 和 xml相互转换
    clickhouse 离线/在线 安装和java通过jdbc链接
    clickhouse安装 Requires: libstdc++.so.6(GLIBCXX_3.4.19)(64bit)
    maven pom.xml详解
    elasticsearch 简单demo RestHighLevelClient LowLeveClient
    从一段时间段中获取所有日期
    hadoop 输入路径用正则表达式被默认处理为多个参数的问题
    对象变化影响map中的数据
    小技巧积累
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/15401734.html
Copyright © 2011-2022 走看看