jQuery Validate密码验证的使用
admin
2023-02-13 03:20:02
0

jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求。该插件捆绑了一套有用的验证方法,包括 URL 和电子邮件验证,同时提供了一个用来编写用户自定义方法的 API。所有的捆绑方法默认使用英语作为错误信息,且已翻译成其他 37 种语言。

 

1. 下载和引入validate.js

注意Validate的导入要在jQuery库之后。代码如下:

先导入jQuery库,然后导入Validate插件,如果是中文提示还需要导入messages_zh.js

 

Html

οnsubmit="return false">

    

        

        

    

    

        

        

    

    

        

        

            

        

    

    

Js

 $(document).ready(function () {

var icon = " ";

 // 项目一开始就要初始化验证

    $("#loginForm").validate({

        errorElement: 'span',

        errorClass: 'error-block',

        onfocusout: function(element) { $(element).valid(); },

        rules: {

            username: {

                required: true

            },

            password: {

                required: true,

                passWord:true    // 和自定义验证相同

            },

            verify: {

                required: true

            }

        },

        messages: {

            username: {

                required: icon + "请输入您的用户名",

            },

            password: {

                required: icon + "请输入您的密码",

                passWord:icon + "请输入至少10位密码(至少包含1个字母,1个数字和1个特殊字符)",

            },

            verify: {

                required: icon + "请输入您的密码",

            }

        },

        submitHandler:function () {

            login()   //验证成功的提交事件

        }

    })

 

// 自定义密码验证

    jQuery.validator.addMethod("passWord", function(value, element) {

        var passWord = /^(?=.*?[A-Za-z])(?=.*?[0-9])(?=.*((?=[\x21-\x7e]+)[^A-Za-z0-9])).{10,}$/;

        return this.optional(element) || (passWord.test(value));

    }, "请输入至少10位密码(至少包含1个字母,1个数字和1个特殊字符)");

})

提示 form表格验证会提交,form要添加 οnsubmit=return false,登录提交按钮改为 type="submit "

jQuery Validate密码验证 API

内置验证方式:

validate ()的可选项:

 **showErrors:**

$(".selector").validate({

   showErrors:function(errorMap,errorList) {

        $("#summary").html("Your form contains " + this.numberOfInvalids() + " errors,see details below.");

        this.defaultShowErrors();

   }

})

**errorPlacement:**

跟一个函数,可以自定义错误放到哪里

$("#myform").validate({

  rrorPlacement:function(error,element) { error.appendTo(element.parent("td").next("td"));

   },

   debug:true

})

 

**success:**

要验证的元素通过验证后的动作,如果跟一个字符串,会当做一个css,也可跟一个函数

$("#myform").validate({

        success:"valid",

        submitHandler:function() { alert("Submitted!") }

})

 

**highlight:**

可以给未通过验证的元素加效果,闪烁等

默认的提示

messages: {

required: "This field is required.",

remote: "Please fix this field.",

email: "Please enter a valid email address.",

url: "Please enter a valid URL.",

date: "Please enter a valid date.",

dateISO: "Please enter a valid date (ISO).",

dateDE: "Bitte geben Sie ein gltiges Datum ein.",

number: "Please enter a valid number.",

numberDE: "Bitte geben Sie eine Nummer ein.",

digits: "Please enter only digits",

creditcard: "Please enter a valid credit card number.",

equalTo: "Please enter the same value again.",

accept: "Please enter a value with a valid extension.",

maxlength: $.validator.format("Please enter no more than {0} characters."),

minlength: $.validator.format("Please enter at least {0} characters."),

rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."),

range: $.validator.format("Please enter a value between {0} and {1}."),

max: $.validator.format("Please enter a value less than or equal to {0}."),

min: $.validator.format("Please enter a value greater than or equal to {0}.")

},

Query Validate提供了中文信息提示包,位于下载包的 dist/localization/messages_zh.js,只需将包引入到页面即可。

当然也可以自己设置messages来设置提示(例如开头的例子)。

 

4、更改错误信息显示的样式

 

设置错误提示的样式,可以增加图标显示,在该系统中已经建立了一个validation.css专门用于维护校验文件的样式

也可以通过设置errorClasserrorElement给提示设置不同的报错信息

 

复制代码

input.error { border: 1px solid red; }

label.error {

background:url("./demo/images/unchecked.gif") no-repeat 0px 0px;

padding-left: 16px;

padding-bottom: 2px;

font-weight: bold;

color: #EA5200;

}

label.checked {

background:url("./demo/images/checked.gif") no-repeat 0px 0px;

}

 

每个字段验证通过执行函数

successString,Callback

要验证的元素通过验证后的动作,如果跟一个字符串,会当做一个css类,也可跟一个函数

success: function(label) {

    // set   as text for IE

    label.html(" ").addClass("checked");

    //label.addClass("valid").text("Ok!")

}

6、验证的触发方式修改

 

onsubmitBoolean Default: true

提交时验证. 设置唯false就用其他方法去验证

onfocusoutBoolean Default: true

失去焦点是验证(不包括checkboxes/radio buttons)

onkeyupBoolean Default: true

keyup时验证.

onclickBoolean Default: true

checkboxes radio 点击时验证

focusInvalidBoolean Default: true

提交表单后,未通过验证的表单(第一个或提交之前获得焦点的未通过验证的表单)会获得焦点

focusCleanupBoolean Default: false

如果是true那么当未通过验证的元素获得焦点时,移除错误提示。避免和focusInvalid一起用

 

7、异步验证

 

remoteURL

使用ajax方式进行验证,默认会提交当前验证的值到远程地址,如果需要提交其他的值,可以使用data选项

 

复制代码

示例一:

remote: "check-email.jsp"

示例二:

remote: {

    url: "check-email.jsp",     //后台处理程序

    type: "post",               //数据发送方式

    dataType: "json",           //接受数据格式   

    data: {                     //要传递的数据

        username: function() {

            return $("#username").val();

        }

    }

}

远程地址只能输出"true""false",不能有其它输出。

8、添加自定义校验

addMethodname, method, message
自定义验证方法

// 中文字两个字节

jQuery.validator.addMethod(

    "byteRangeLength",

    function(value, element, param) {

        var length = value.length;

        for(var i = 0; i < value.length; i++){

            if(value.charCodeAt(i) > 127){

                length++;

            }

        }

        return this.optional(element) || (length >= param[0] && length <= param[1]);   

    },

    $.validator.format("请确保输入的值在{0}-{1}个字节之间(一个中文字算2个字节)")

);

 

// 邮政编码验证   

jQuery.validator.addMethod("isZipCode", function(value, element) {   

    var tel = /^[0-9]{6}$/;

    return this.optional(element) || (tel.test(value));

}, "请正确填写您的邮政编码");

// 手机号码验证

jQuery.validator.addMethod("mobile", function(value, element) {

    var length = value.length;

    var mobile =  /^(((13[0-9]{1})|(15[0-9]{1}))+\d{8})$/

    return this.optional(element) || (length == 11 && mobile.test(value));

}, "手机号码格式错误");  

 

// 电话号码验证   

jQuery.validator.addMethod("phone", function(value, element) {

    var tel = /^(0[0-9]{2,3}\-)?([2-9][0-9]{6,7})+(\-[0-9]{1,4})?$/;

    return this.optional(element) || (tel.test(value));

}, "电话号码格式错误");

 

// 邮政编码验证   

jQuery.validator.addMethod("zipCode", function(value, element) {

    var tel = /^[0-9]{6}$/;

    return this.optional(element) || (tel.test(value));

}, "邮政编码格式错误");

 

// QQ号码验证   

jQuery.validator.addMethod("qq", function(value, element) {

    var tel = /^[1-9]\d{4,9}$/;

    return this.optional(element) || (tel.test(value));

}, "qq号码格式错误");

 

// IP地址验证

jQuery.validator.addMethod("ip", function(value, element) {

    var ip = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/;     return this.optional(element) || (ip.test(value) && (RegExp./;     return this.optional(element) || (ip.test(value) && (RegExp.1 < 256 && RegExp.2 < 256 && RegExp.2 < 256 && RegExp.3 < 256 && RegExp.$4 < 256));

}, "Ip地址格式错误");

 

// 字母和数字的验证

jQuery.validator.addMethod("chrnum", function(value, element) {

    var chrnum = /^([a-zA-Z0-9]+)$/;

    return this.optional(element) || (chrnum.test(value));

}, "只能输入数字和字母(字符A-Z, a-z, 0-9)");

 

// 中文的验证

jQuery.validator.addMethod("chinese", function(value, element) {

    var chinese = /^[\u4e00-\u9fa5]+$/;

    return this.optional(element) || (chinese.test(value));

}, "只能输入中文");

 

// 下拉框验证

$.validator.addMethod("selectNone", function(value, element) {

    return value == "请选择";

}, "必须选择一项");

 

// 字节长度验证

jQuery.validator.addMethod("byteRangeLength", function(value, element, param) {

function(){ //黄金代码 http://www.kaifx.cn/mt4/kaifx/1805.html

    var length = value.length;

    for (var i = 0; i < value.length; i++) {

        if (value.charCodeAt(i) > 127) {

            length++;

        }

    }

    return this.optional(element) || (length >= param[0] && length <= param[1]);

}, $.validator.format("请确保输入的值在{0}-{1}个字节之间(一个中文字算2个字节)"));

1.要在additional-methods.js文件中添加或者在jquery.validate.js添加建议一般写在additional-methods.js文件中

 

2.messages_cn.js文件添加:isZipCode: “只能包括中文字、英文字母、数字和下划线”,调用前要添加对additional-methods.js文件的引用。

 

9radiocheckboxselect的验证

 

复制代码

1.radiorequired表示必须选中一个

checkboxrequired表示必须选中

checkboxminlength表示必须选中的最小个数,maxlength表示最大的选中个数,rangelength:[2,3]表示选中个数区间

selectrequired表示选中的value不能为空

selectminlength表示选中的最小个数(可多选的select,maxlength表示最大的选中个 数,rangelength:[2,3]表示选中个数区间

10.可以设置validate的默认值

如果有两个或者多个表格验证,可以设置默认值

$.validator.setDefaults({

errorElement: span,

errorClass: error-block,

submitHandler: function(form) { alert(submit!); form.submit(); }

});

 


上一篇:axios

下一篇:隐式类型转换

相关内容

热门资讯

中央决定:华润集团董事长调整 2026年7月23日,华润(集团)有限公司召开中层以上管理人员大会。中央组织部有关负责同志宣布了党中...
学习笔记丨“努力让每个孩子都能... 制作:王宇峰 岳小乔 贾雪
活力中国调研行丨一束“光”的故... 它被称为“最快的刀”“最准的尺”“最亮的光”。从一束“光”到一颗“芯”,再到规模千亿的产业集群,今天...
携手前沿技术 共创智能未来 携手前沿技术 共创智能未来 ——来自2026年世界互联网大会数字丝路发展论坛的声音 夏日长安,秦岭叠...
上海浩劢取得桌面式轻型悬臂吊专... 国家知识产权局信息显示,上海浩劢工业科技有限公司取得一项名为“桌面式轻型悬臂吊”的专利,授权公告号C...
毒油风暴未歇民进党却急着上架,... 海峡导报综合报道 岛内毒油食安风暴持续延烧,台北市长蒋万安持续号召民众7·25上凯道,但“食药署”2...
WAIC挤满“卖铲人”,但算力... 2026年的WAIC,机器人依然抢占了绝大多数镜头。但展馆里数量增长最快的,是自称“AI Infra...
对话芯展速许玮:“内存墙”下,... Token经济时代,衡量AI价值的标准,正从模型能力转向Token生产效率。AI因此从工具演变为新的...
菲尔兹奖得主邓煜写过这些诗词 邓煜 李少君 徐俪成 | 澎湃新闻记者 徐萧 整理北京时间7月23日晚,中国数学家王虹、邓煜获颁菲尔...
中国海警局新闻发言人就菲位南海... 中国海警局新闻发言人姜略表示,7月24日,菲律宾组织7艘公务船、3艘海警舰、1艘运鱼船,并唆使大量渔...