jQuery插件Validation表单验证详解

jQuery插件Validation表单验证详解

表单验证是Web开发中非常重要的一环,jQuery插件Validation就是基于jQuery实现的一款表单验证插件,非常方便实用。本篇文章将会详细讲解jQuery插件Validation的使用方法,以及常见的验证规则和自定义验证规则。

页面引入jQuery和jQuery Validation插件

首先,将jQuery和jQuery Validation插件引入到页面中:

<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
<script src="https://cdn.bootcss.com/jquery-validate/1.19.0/jquery.validate.min.js"></script>

基本使用方法

HTML表单

要使用jQuery Validation插件,首先需要有一个HTML表单:

<form id="myForm">
  <label for="username">Username:</label>
  <input type="text" name="username" id="username">
  <br><br>
  <label for="password">Password:</label>
  <input type="password" name="password" id="password">
  <br><br>
  <input type="submit" value="Submit">
</form>

基本验证规则

接下来是基本验证规则,调用validate()方法即可:

$("#myForm").validate();

调用validate()方法后,就会自动对表单中的input元素进行验证。默认情况下,用户名和密码不能为空。

自定义验证规则

如果需要自定义验证规则,可以使用rules()方法,这里以验证密码强度为例:

$.validator.addMethod("strongPassword", function(value, element) {
    return this.optional(element) || /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$/.test(value);
}, "Your password must be at least 8 characters long and contain at least one letter and one number.");

$("#myForm").validate({
    rules: {
        password: {
            required: true,
            strongPassword: true
        }
    }
});

首先使用addMethod()方法添加自定义规则,这里的规则是密码长度不能少于8,且必须包含至少一个字母和一个数字。

然后在validate()方法中,使用rules()方法指定验证规则。

错误提示信息定制

如果默认的错误提示信息不能满足需求,可以使用messages()方法自定义错误提示信息:

$("#myForm").validate({
    messages: {
        username: {
            required: "Username is required."
        },
        password: {
            required: "Password is required.",
            strongPassword: "Your password must be at least 8 characters long and contain at least one letter and one number."
        }
    }
});

messages()方法中,使用对象指定每个表单项对应的错误提示信息。

示例1:带有“验证码”的表单验证

下面是一个带有验证码的表单验证:

<form id="myForm2">
  <div>
    <label for="username">Username:</label>
    <input type="text" name="username" id="username">
  </div>
  <div>
    <label for="password">Password:</label>
    <input type="password" name="password" id="password">
  </div>
  <div>
    <label for="confirm_password">Confirm Password:</label>
    <input type="password" name="confirm_password" id="confirm_password">
  </div>
  <div>
    <label for="email">Email:</label>
    <input type="email" name="email" id="email">
  </div>
  <div>
    <label for="phone">Phone:</label>
    <input type="tel" name="phone" id="phone">
  </div>
  <div>
    <label for="captcha">Captcha:</label>
    <input type="text" name="captcha" id="captcha">
    <img src="captcha.php" id="captcha_img">
    <a href="#" id="new_captcha">New Captcha</a>
  </div>
  <div>
    <input type="submit" value="Submit">
  </div>
</form>

这里的验证码是一个图片,需要重新生成。下面是Javascript代码:

$.validator.addMethod("strongPassword", function(value, element) {
    return this.optional(element) || /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$/.test(value);
}, "Your password must be at least 8 characters long and contain at least one letter and one number.");

$("#myForm2").validate({
    rules: {
        username: "required",
        password: {
            required: true,
            strongPassword: true
        },
        confirm_password: {
            equalTo: "#password"
        },
        email: {
            required: true,
            email: true
        },
        phone: {
            required: true,
            number: true
        },
        captcha: {
            required: true,
            remote: "check-captcha.php" // 远程验证验证码是否正确
        }
    },
    messages: {
        captcha: {
            remote: "Wrong captcha."
        }
    }
});

$("#new_captcha").click(function() {
    // 重新生成验证码
    $("#captcha_img").attr('src', 'captcha.php');
    return false;
});

在验证规则中,使用了remote规则实现远程验证。当验证验证码输入是否正确时,会向服务器发送Ajax请求,再返回验证结果。这里的check-captcha.php代码类似于下面这样:

<?php
session_start();
if (strtolower($_POST["captcha"]) == strtolower($_SESSION["captcha"])) {
    echo "true";
} else {
    echo "false";
    exit;
}
?>

示例2:动态添加表单项

下面是一个动态添加表单项的例子,点击Add按钮,可以添加任意多个input输入框:

<form id="myForm3">
  <div>
    <label for="name1">Name1:</label>
    <input type="text" name="name1" id="name1">
  </div>
  <div id="dynamicForm">
  </div>
  <button type="button" id="btnAdd">Add</button>
  <input type="submit" value="Submit">
</form>

点击Add按钮后,动态添加表单项:

$("#btnAdd").click(function() {
    var div = $("<div />");
    div.html(getTemplateHtml());
    $("#dynamicForm").append(div);
});

function getTemplateHtml() {
    var count = jQuery("#dynamicForm > div").length + 1;
    var html = '<div><label for="name' + count + '">Name' + count + ':</label>' +
               '  <input type="text" name="name' + count + '" id="name' + count + '">' +
               '</div>';
    return html;
}

在这里只验证了动态添加的input是否为空:

$("#myForm3").validate({
    rules: {
        name1: "required"
    },
    messages: {
        name1: "Required"
    }
});

总结

以上是jQuery插件Validation表单验证的详细攻略,后续使用中会遇到很多其他的验证规则,可以在官方文档中查询相关信息。不仅如此,我们还可以通过自定义方法来增强Validation的功能,使其在实际使用中更加灵活、方便。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jQuery插件Validation表单验证详解 - Python技术站

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

相关文章

  • 理解Javascript_07_理解instanceof实现原理

    理解Javascript_07_理解instanceof实现原理 在Javascript中,我们可以使用instanceof操作符来判断一个对象是否属于某个类或者构造函数的实例。这是一个非常常见的操作,经常用于判断一个对象的类型。在本篇攻略中,我们将深入探讨instanceof的实现原理,以及如何使用它来判断一个对象的类型。 instanceof的作用 in…

    JavaScript 2023年5月28日
    00
  • Easy.Ajax 部分源代码 支持文件上传功能, 兼容所有主流浏览器

    Easy.Ajax 是一款基于 jQuery 库的 Ajax 库,用于简化 Ajax 的操作流程。其中,Easy.Ajax 部分源代码支持文件上传功能,同时兼容各大主流浏览器。下面将详细讲解该功能的使用方法。 首先,需要在页面中引入必要的文件及库: <!– 引入 jQuery 库 –> <script src="https:/…

    JavaScript 2023年6月11日
    00
  • 解决layui数据表格Date日期格式的回显Object的问题

    解决 layui 数据表格 Date 日期格式的回显 Object 的问题,可以按照以下步骤进行: 第一步:从后端获取日期数据 从后端获取的日期数据格式往往是 Object 类型,需要将其转化为需要的格式。 let dateObj = new Date(res.date); //假设后端返回的日期为对象形式的date let dateStr = dateOb…

    JavaScript 2023年6月10日
    00
  • jquery eval解析JSON中的注意点介绍

    jQuery eval解析JSON中的注意点介绍 在使用 jQuery 的 eval 方法来解析 JSON 数据时,需要注意一些细节,这些细节将直接影响到解析过程的准确性和效率。本文将介绍这些注意点,并使用示例进行说明。 什么是 jQuery eval 方法 在 jQuery 中,eval 方法被用于将 JSON 数据解析为 JavaScript 对象。ev…

    JavaScript 2023年5月27日
    00
  • 基于Three.js实现3D玉兔效果的示例代码

    下面是我对于“基于Three.js实现3D玉兔效果的示例代码”的详细攻略: 1. 了解Three.js Three.js 是一个基于 WebGL 的 3D 渲染库,可以让我们在浏览器中创建复杂的 3D 呈现。在使用 Three.js 前,需要了解 WebGL、3D 基础概念等知识。 2. 准备工作 在开始我们的3D玉兔之旅前,需要先准备好环境: 2.1 引入…

    JavaScript 2023年6月10日
    00
  • javascript中 try catch用法

    关于“JavaScript中try catch用法”的完整攻略,我为您总结如下: 什么是try catch try catch 是一个 JavaScript 异常处理机制,通过 try 语句块可以捕获代码中的异常,并在 catch 语句块中对异常进行处理,保证代码的正常执行。 try catch 语句格式 try { // 可能会抛出错误的代码 } catc…

    JavaScript 2023年5月28日
    00
  • 2019年百度前端工程师面试题(附答案)

    关于 “2019年百度前端工程师面试题(附答案)” 的完整攻略,我会从以下几个方面进行讲解: 答题技巧 题目分类 示例讲解 1. 答题技巧 首先,我们需要了解一些答题技巧,来帮助我们更好地回答面试题。 首先,阅读题目时一定要仔细,理解清楚题目要求和限制。 其次,如果遇到复杂的题目或者不理解的概念,不要惊慌,可以先思考一下如何简化问题,或者查看相关的资料。 除…

    JavaScript 2023年5月19日
    00
  • js控制台输出的方法(详解)

    JS控制台输出的方法(详解) 在前端开发中,我们通常需要在控制台输出一些信息以帮助我们调试代码。在JavaScript中,有多种方法可以输出信息到控制台。接下来我们将一一介绍这些方法。 console.log() console.log() 是最常用的控制台输出方法,可以输出任何类型的数据类型,比如字符串、数字、布尔值、对象等。 console.log(‘H…

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