python测试开发django-198.bootstrap-formvalidation校验成功发ajax请求

前言

form表单提交按钮是type="submit"类型,输入框按回车会自动提交表单。
如果我们想自定义提交表单,可以使用ajax 提交。

Form 表单

一个登录页面的Form 表单

        <form id="login-form" action="/api/login" method="POST" role="form" class="form-horizontal">
                <div class="form-group">
                    <label for="username" class="col-sm-3 col-md-3 col-lg-3 control-label">&nbsp;&nbsp;名:</label>
                    <div class="col-xs-12 col-sm-9 col-md-9 col-lg-9" >
                        <input type="text" class="form-control" id="username" name="username" placeholder="请输入用户名">
                    </div>
                </div>
                <div class="form-group">
                    <label for="password" class="col-sm-3 col-md-3 col-lg-3 control-label">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;码:</label>
                    <div class="col-xs-12 col-sm-9 col-md-9 col-lg-9" >
                        <input type="password" class="form-control" id="password" name="password" placeholder="请输入密码">
                    </div>
                </div>
         
                <div class="input-group-lg">
                    <input class="btn btn-success btn-block" id="loginBtn" type="submit" value="立即登录 > ">
                </div>
            </form>

input 提交按钮有type="submit" 属性,按回车或点登录按钮,都会触发form表单的提交
提交地址根据action="/api/login" 属性来设置。
如果我们想异步提交,通过ajax自己定义提交请求,需屏蔽回车提交事件

    $("#login-for").submit(function () {
        //按下回车/提交按钮后的操作
        //返回false
        return false;
    });

formvalidation校验

表单校验成功后发请求

 $(element).formValidation({
        icon: {
            valid : 'glyphicon glyphicon-ok',
            invalid : 'glyphicon glyphicon-remove',
            validating : 'glyphicon glyphicon-refresh'
        },
        fields: {
            username: {
                validators : {
                    notEmpty : {
                        message : '不能为空'
                    },
                    stringLength: {
                        min: 1,
                        max: 30,
                        message: '用户名称1-30位字符' },
                    regexp: {
                        regexp:  /^[\u0391-\uFFE5A-Za-z0-9_\s]+$/,
                        message: '用户名称不能有特殊字符,请用中英文数字_'
                    }
                }
            },
            password : {
                validators : {
                    notEmpty : {
                        message : '不能为空'
                    },
                    stringLength: {
                        min: 6,
                        max: 16,
                        message: '密码6-16位字符' },
                    regexp: {
                        regexp:  /^[\u0391-\uFFE5A-Za-z0-9_\s]+$/,
                        message: '不能有特殊字符,请用中英文数字下划线'
                    }
                }
            }
        }
    }).on('success.form.fv', function (e) {
        // Prevent form submission 阻止默认的submit方法,用ajax提交
        e.preventDefault();
        // // Some instances you can use are
        let $form = $(e.target);        // The form instance
        let fv = $(e.target).data('formValidation'); // FormValidation instance
        $.ajax({
            type:'post',
            url:'/api/login',
            contentType: "application/json",
            data: JSON.stringify($form.serializeJson()),
            dataType:'json',
            beforeSend: function() {
                // 发送请求,禁用提交按钮
                $('#registerBtn').attr('disabled', 'disabled');
                },
            complete: function () {
                // 请求完成移除 disabled 属性
                $('#registerBtn').removeAttr('disabled');
            },
            success: function(result, status, xhr){
                // 登录成功-立马进登录后页面
                location.href="index.html";  
            },
            error:  function(jqXHR, textStatus, errorMsg){
                fv.resetForm();     // 重置校验
        });
    });

登录失败,需重置校验

error:  function(jqXHR, textStatus, errorMsg){
                fv.resetForm();     // 重置校验
        }
posted @   上海-悠悠  阅读(287)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2021-11-08 python测试开发django-169.过滤器django-filter 入门使用
2021-11-08 python测试开发django-168.jquery的clone()后 bootstrap-select 中 selectpicker 下拉框选择无效问题解决
2021-11-08 python测试开发django-167. jQuery中append() 动态新增的元素 click 事件无效的解决办法
2021-11-08 python测试开发django-166.jQuery 使用append()动态添加div元素
2019-11-08 python测试开发django-72.删除表后如何重新生成表
点击右上角即可分享
微信分享提示