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

yizhihongxing

这里是详细讲解“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实现键盘自动打字效果

    实现键盘自动打字效果可以分为以下几个步骤: 1. 获取需要自动打印的文本 首先,需要准备需要打印的文本内容。这可以通过在HTML中插入一个元素,并给该元素设置一个文本内容,然后使用JavaScript获取该元素的innerText或innerHTML属性值,就可以得到需要打印的文本。 示例代码 HTML代码: <p id="text&quot…

    JavaScript 2023年5月28日
    00
  • javascript简单事件处理和with用法介绍

    接下来我将为你详细讲解“Javascript简单事件处理和with用法介绍”的完整攻略。 Javascript简单事件处理 在Web开发中,如何对用户的行为做出响应是非常关键的。Javascript通过事件处理机制,使得我们可以方便地响应用户的行为。 常见的事件类型 Javascript中常见的事件类型包括以下几种: click:点击事件 onload:页面…

    JavaScript 2023年6月11日
    00
  • js验证身份证号码记录的方法

    下面我将为你详细讲解 “js验证身份证号码记录的方法” 的完整攻略。 一、验证身份证号码的规则 目前,中国大陆身份证号码的规则如下: 身份证号码共18位,前17位为数字,最后一位为数字或字母X。 第1-6位为地址码,表示身份证持有人的籍贯地。 第7-14位为出生日期码,表示身份证持有人的出生年月日。 第15-17位为顺序码,表示同一地址码的多个人员的顺序区分…

    JavaScript 2023年6月10日
    00
  • javascript贪吃蛇完整版(源码)

    JavaScript贪吃蛇完整版(源码)攻略 一、简介 本项目是一个使用JavaScript实现的贪吃蛇游戏,包含了完整的源代码。该游戏采用Canvas进行绘制,并具有基本的操作功能,包括开始、暂停、重新开始等。本项目适合JavaScript初学者学习。 二、源码文件结构 本项目的源码文件主要分为HTML、CSS和JavaScript三个部分。具体文件结构如…

    JavaScript 2023年6月11日
    00
  • JS获取时间的相关函数及时间戳与时间日期之间的转换

    获取时间的相关函数及时间戳与时间日期之间的转换 在JavaScript中,获取时间的方法非常多,包括获取时间戳、获取当前日期时间等。下面我们来依次介绍这些函数。 1.获取时间戳: 时间戳指的是距离1970年1月1日0时0分0秒(UTC时间)的时间差,单位为毫秒。获取时间戳有两种方式: (1) Date.now() 函数 这个函数返回当前时间的时间戳,它等价于…

    JavaScript 2023年5月27日
    00
  • JS闭包经典实例详解

    JS闭包经典实例详解 什么是闭包? 在了解闭包经典实例之前,我们需要先明确什么是闭包。闭包是指由函数及其相关引用的数据组成的一个整体。在 JavaScript 中,闭包既是函数,也是引用了该函数中自由变量的对象。闭包通过保存引用外部变量的方式可以访问外部的变量。 具体而言,这里的自由变量是指在函数内部定义,但是在函数外部访问它们所定义的词法环境。词法环境是在…

    JavaScript 2023年6月10日
    00
  • JS对象与JSON格式数据相互转换

    JS对象与JSON格式数据相互转换是Web开发中非常常见的任务。在以下的攻略中,我提供两种基本的方法帮助你完成这个任务。其中一种使用JavaScript的内置函数,另一种使用第三方库。 1. 使用JavaScript内置函数方法转换 JavaScript提供了两个内置函数 JSON.stringify() 和 JSON.parse() 分别用于将JS对象转换…

    JavaScript 2023年5月27日
    00
  • Javascript倒计时(定时)执行跳转事件的代码

    下面我将详细讲解“Javascript倒计时(定时)执行跳转事件的代码”的完整攻略。 目标 我们的目标是在网页上实现倒计时(定时)功能,到达指定的时间后自动跳转到某一个指定页面。 实现思路 实现该功能的思路如下: 获取当前时间和目标时间之间的时间差,并通过一定算法将其转换成剩余的天数、小时数、分钟数、秒数。 通过 JavaScript 中的 setInter…

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