Bootstrap 表单验证formValidation 实现远程验证功能

这里是详细讲解“Bootstrap 表单验证formValidation 实现远程验证功能”的完整攻略:

什么是 Bootstrap 表单验证 formValidation

Bootstrap 表单验证 formValidation 是一种基于 jQuery 和 Bootstrap 的前端表单验证插件,它可以帮助开发者实现对表单数据的合法性检查。与其他前端表单验证插件相比,Bootstrap 表单验证 formValidation 具有以下优点:

  • 它对 Bootstrap 样式的支持非常友好,可以轻松地与 Bootstrap 集成。
  • 它支持多种校验规则和提示方式,可以满足各种不同的数据校验需求。
  • 它支持远程校验和自定义校验函数,可以根据具体业务需要进行灵活的扩展。
  • 它提供了详细的文档和示例,方便开发者快速上手。

实现远程验证功能的步骤

要实现远程验证功能,我们需要完成以下步骤:

  1. 引入必要的文件
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-validator@0.11.9/css/validator.min.css">
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>  
<script src="https://cdn.jsdelivr.net/gh/formvalidation/formvalidation@1.8.2/dist/js/FormValidation.min.js"
    integrity="sha384-tGLEF1v9Dd9tzqgfW4LtDSzFJdA9pEJgOdwX2v5ZgEF8BFTThh39f4eBhDff25s8"
    crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/gh/formvalidation/formvalidation@1.8.2/dist/js/plugins/Bootstrap5.min.js"
    integrity="sha384-VTJqngotZ/Mn+v3U1CCouSeNlEEfM0Cus/UH/r0cNym9ZsEn6l4KuLaZedKtIcla"
    crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/gh/formvalidation/formvalidation@1.8.2/dist/js/plugins/Validator.min.js"
    integrity="sha384-cAE4Z5hrCPG8NlNtRUmzrMMvMnI441SFXrxDENQD9T3R3VaxJdwc9vj57oT2hMFu"
    crossorigin="anonymous"></script>
  1. 设置表单元素和校验规则
<form id="registerForm" method="post" class="form-horizontal" autocomplete="off">
    <div class="mb-3">
        <label class="form-label">用户名</label>
        <input type="text" class="form-control" name="username" required>
    </div>
    <div class="mb-3">
        <label class="form-label">邮箱</label>
        <input type="email" class="form-control" name="email" required>
    </div>
    <div class="mb-3">
        <label class="form-label">手机号</label>
        <input type="text" class="form-control" name="phone" required>
    </div>
    <button type="submit" class="btn btn-primary">注册</button>
</form>
<script>
    $(function () {
        $('#registerForm').formValidation({
            framework: 'bootstrap5',
            fields: {
                username: {
                    validators: {
                        notEmpty: {
                            message: '用户名不能为空'
                        },
                        remote: {
                            message: '用户名已存在',
                            url: '/checkUsername',
                            dataType: 'json',
                            data: {
                                username: function() {
                                    return $('input[name="username"]').val();
                                }
                            },
                            type: 'POST'
                        }
                    }
                },
                email: {
                    validators: {
                        notEmpty: {
                            message: '邮箱不能为空'
                        },
                        remote: {
                            message: '邮箱已被注册',
                            url: '/checkEmail',
                            dataType: 'json',
                            data: {
                                email: function() {
                                    return $('input[name="email"]').val();
                                }
                            },
                            type: 'POST'
                        }
                    }
                },
                phone: {
                    validators: {
                        notEmpty: {
                            message: '手机号不能为空'
                        },
                        remote: {
                            message: '手机号已被注册',
                            url: '/checkPhone',
                            dataType: 'json',
                            data: {
                                phone: function() {
                                    return $('input[name="phone"]').val();
                                }
                            },
                            type: 'POST'
                        }
                    }
                }
            }
        });
    });
</script>
  1. 实现远程校验的后端接口

像上面代码所示,在每个表单元素的验证规则中设置 remote 属性,然后指定远程校验的 URL,并将需要传递的数据通过 data 属性传递给后端接口。

后端接口可以根据业务需求进行实现,例如:

@app.route('/checkUsername', methods=['POST'])
def checkUsername():
    username = request.form.get('username')
    # 检查用户名是否已存在
    if dao.checkUsername(username):
        return jsonify({'valid': False})
    else:
        return jsonify({'valid': True})

示例说明

  1. 异步请求示例:实现对用户注册时输入的用户名进行实时校验,如果用户名已存在,则提示用户修改。

在上面的代码中,我们给用户名的校验规则添加了一个 remote 属性,并指定了远程校验的 URL。

username: {
    validators: {
        notEmpty: {
            message: '用户名不能为空'
        },
        remote: {
            message: '用户名已存在',
            url: '/checkUsername',
            dataType: 'json',
            data: {
                username: function() {
                    return $('input[name="username"]').val();
                }
            },
            type: 'POST'
        }
    }
}

在后台实现用户名校验的接口 checkUsername:

@app.route('/checkUsername', methods=['POST'])
def checkUsername():
    username = request.form.get('username')
    # 检查用户名是否已存在
    if dao.checkUsername(username):
        return jsonify({'valid': False})
    else:
        return jsonify({'valid': True})
  1. 自定义校验函数示例:实现对用户注册时输入的密码和确认密码进行实时校验,如果两个输入的密码不一致,则提示用户修改。

在上面的代码中,我们给两个密码元素的校验规则都添加了一个相同的 custom 选项,并指定一个自定义函数。

password: {
    validators: {
        notEmpty: {
            message: '密码不能为空'
        },
        custom: {
            message: '两次密码不一致',
            validator: function () {
                var password = $('input[name="password"]').val();
                var confirmPassword = $('input[name="confirm_password"]').val();
                if (password !== confirmPassword) {
                    return false;
                }
                return true;
            }
        }
    }
},
confirm_password: {
    validators: {
        notEmpty: {
            message: '确认密码不能为空'
        },
        custom: {
            message: '两次密码不一致',
            validator: function () {
                var password = $('input[name="password"]').val();
                var confirmPassword = $('input[name="confirm_password"]').val();
                if (password !== confirmPassword) {
                    return false;
                }
                return true;
            }
        }
    }
}

在这个自定义函数中,我们通过比较两个密码元素的值来判断两次密码是否一致,如果不一致就返回 false,否则返回 true。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Bootstrap 表单验证formValidation 实现远程验证功能 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • JS数据类型判断的几种常用方法

    一、题目背景在JavaScript编程中,我们经常需要对数据的类型进行判断,以便进行不同的操作。本文详细讲解了JS数据类型判断的几种常用方法。 二、常用方法1. typeof 运算符这是最常用的判断数据类型的方式。它可以返回一个字符串,表示操作数的类型。它可以判断基本数据类型、“function”和“undefined”类型,但不能判断具体的引用类型。使用方…

    JavaScript 2023年5月27日
    00
  • Discuz .net版本中的短消息系统

    Discuz .net是一款知名的论坛程序,其短消息系统是其重要的功能之一。本文将详细讲解Discuz .net版本中的短消息系统,包括如何创建、管理和使用短消息系统。 创建和启用短消息系统 在Discuz .net中,默认情况下是已经启用了短消息系统的,而且用户可以在论坛的任何页面中通过左上角的“短消息”链接进入短消息系统。如果管理员需要修改短消息系统的设…

    JavaScript 2023年6月11日
    00
  • JavaScript实现form表单的多文件上传

    使用 JavaScript 实现 form 表单的多文件上传,需要按照以下步骤进行: HTML 部分 在 HTML 中添加表单和 input 元素,其中 input 的 type 属性为 file,multiple 属性为 true,表示支持选择多个文件。例如: <form id="form_upload" method=&quot…

    JavaScript 2023年5月27日
    00
  • 前端代码安全与混淆

    作者:京东零售 周明亮 一、友商网页分析 1.1 亚马逊 亚马逊商详地址:https://www.amazon.com/OtterBox-Commuter-Case-iPhone-Packaging 所有交互事件在页面初始化时,不进行下发,等待通过 js 请求后下发 具体点击事件js内容 采用自执行方式,防止代码格式化。【无法调用 Chrome 自带的代码格…

    JavaScript 2023年4月17日
    00
  • JS 获取文件后缀,判断文件类型(比如是否为图片格式)

    获取文件后缀和判断文件类型,是在JavaScript中经常用到的操作。具体的攻略如下: 1. 获取文件后缀 在JavaScript中获取文件后缀,可以使用字符串操作的方式,例如可以使用string.slice()或者string.substr()方法获取到文件名中 “.” 后面的字符串部分,即文件的后缀。 示例代码: const fileName = &qu…

    JavaScript 2023年5月27日
    00
  • js常用自定义公共函数汇总

    JS常用自定义公共函数是指在JS开发中常用的、可多次使用的函数,初学者建议掌握,提高开发效率。 常用自定义公共函数 1. 获取URL查询参数 在开发中,获取URL中的查询参数是很常见的需求。以下是一个获取URL中查询参数的函数: function getQueryString(name) { var reg = new RegExp("(^|&am…

    JavaScript 2023年5月27日
    00
  • js 处理URL实用技巧

    JS处理URL实用技巧 在前端开发中,我们经常需要对URL进行各种处理,例如从URL中提取参数、修改参数、获取当前页面URL等等。在本篇文章中,我们将探讨常用的JS处理URL实用技巧。 接收URL参数 我们可以使用window.location.search来获取URL中的查询参数,然后再用正则表达式或其他方法提取所需的参数。 function getUrl…

    JavaScript 2023年5月19日
    00
  • js实现倒计时时钟的示例代码

    实现JS倒计时时钟需要用到JS的Date()对象以及setTimeout()方法,下面是完整攻略: 1. 创建一个计时器页面 创建一个HTML页面,包含一个div元素用于显示倒计时,同时在页面底部添加一个JavaScript脚本标签。其中HTML代码如下所示: <!DOCTYPE html> <html> <head> &…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部