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日期处理函数,性能优化批处理

    针对javascript日期处理函数以及性能优化批处理,以下为完整攻略: Javascript日期处理函数 Date对象 Javascript内置Date对象可以用来处理日期和时间。它与其他许多语言中的日期/时间API相似,但也有一些特殊之处。 创建Date对象 var dateNow = new Date(); // 返回当前日期和时间 var dateM…

    JavaScript 2023年5月27日
    00
  • JS对象与json字符串相互转换实现方法示例

    下面是JS对象与JSON字符串相互转换的完整攻略。 什么是JSON? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它是由Douglas Crockford提出的。JSON采用了类似于JavaScript对象的格式来存储和传递数据,因此JSON在JavaScript程序中得到了广泛使用。 JS对象与JSON字符串…

    JavaScript 2023年5月27日
    00
  • JS判断数组中是否有重复值得三种实用方法

    下面我详细讲解下“JS判断数组中是否有重复值得三种实用方法”的完整攻略。 方法一:Set对象 利用Set对象可以去除数组中的重复元素,因此,先将原数组利用Set对象去重,然后比较去重后的数组长度和原数组长度即可判断原数组中是否有重复元素。 示例代码如下: let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1]; let setArr…

    JavaScript 2023年5月27日
    00
  • jQuery form 表单验证插件(fieldValue)校验表单

    jQuery form 表单验证插件(fieldValue)是一款常用的前端表单验证插件,它可以通过简单的配置,快速实现对表单的校验功能。下面将详细讲解如何使用该插件进行表单验证。 安装 安装该插件最简单的方式是通过CDN引入,可以在html文件中添加以下代码: <script src="https://cdn.staticfile.org/…

    JavaScript 2023年6月10日
    00
  • 浅谈React Router关于history的那些事

    浅谈React Router关于history的那些事 React Router是React中最流行的路由库之一,用于在React应用程序中管理不同URL之间的转换。其中一个重要的概念是history,它是实际实现路由的技术基础。本文将重点讲解React Router中关于history的那些事。 history是什么 首先,我们需要了解什么是history…

    JavaScript 2023年6月11日
    00
  • js/jquery解析json和数组格式的方法详解

    JS/jQuery解析JSON和数组格式的方法详解 什么是JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它是基于JavaScript的一个子集,可以被任何语言读取和使用。JSON格式有以下特点: 简洁易读:JSON格式中的数据是纯文本的键值对,可读性较高 结构清晰:数据以键值对(key-value)的…

    JavaScript 2023年5月27日
    00
  • JS基于贪心算法解决背包问题示例

    JS基于贪心算法解决背包问题示例 什么是贪心算法 贪心算法是一种直接寻求局部最优解以达到全局最优的算法,即采取贪心策略,每次做出当时看来最好的选择,不考虑将来的结果,也不进行回溯,只关心眼前的选择会不会对当前局面产生最优的影响。贪心算法的特点是简单、高效、易于证明正确性,并且常用于求解组合优化问题,如背包问题、最小生成树问题、哈夫曼编码等。 背包问题 背包问…

    JavaScript 2023年5月28日
    00
  • javascript小技巧 超强推荐第4/5页

    JavaScript小技巧 超强推荐第4/5页 该篇文章主要介绍了JavaScript开发中常用且实用的一些小技巧和技巧,有助于提升JavaScript编写代码的效率与质量。以下为该篇文章中的一些小技巧和技巧的详细讲解: 把 NodeList转换成数组 在Web开发中,经常会需要获取DOM元素集合,而这些集合通常是一个NodeList对象。而NodeList…

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