龙空技术网

JQuery Validate 自定义表单验证

要你比我更快乐 490

前言:

此刻大家对“jqueryvalidate”大约比较看重,咱们都需要知道一些“jqueryvalidate”的相关资讯。那么小编在网上汇集了一些有关“jqueryvalidate””的相关文章,希望看官们能喜欢,各位老铁们一起来学习一下吧!

今天写项目的时候被这个给难住了,所以找相关的代码学习了一下,总体感觉写的还不错,此篇转自网络。 

我们也可以自定义验证的方法,比如手机号,我们可以自己定义验证方法,自己定义的方法最好写在扩展js中,我们自己写一个jquery.validate.extend.js放到js文件夹中,在该文件中写上:

//自定义方法,完成手机号码的验证

//name:自定义方法的名称,method:函数体, message:错误消息

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

//方法中又有三个参数:value:被验证的值, element:当前验证的dom对象,param:参数(多个即是数组)

//alert(value + "," + $(element).val() + "," + param[0] + "," + param[1]);

returnnew RegExp(/^1[3458]\d{9}$/).test(value);

}, "手机号码不正确");

addMethod表示新加的方法,第一个参数是方法名,第二个参数是函数体,第三个参数表示验证错误消息。其中函数体中,又有三个参数,value表示验证的值,element表示当前dom对象,param表示参数。我们使用正则表达式验证了手机号。这里就不测试了。

此外,jquery validate默认提供表单元素输入时的实时校验,因为我们要求在输入时只提示用户帮助信息,故需要关闭输入的实时校验,为此我们将默认参数中的onkeyup设置为null。

/*************************插件新功能-设置插件validator的默认参数*****************************************/

$.validator.setDefaults({

/*关闭键盘输入时的实时校验*/

onkeyup: null,

/*添加校验成功后的执行函数--修改提示内容,并为正确提示信息添加新的样式(默认是valid)*/

success: function(label){

/*label的默认正确样式为valid,需要通过validClass来重置,否则这里添加的其他样式不能被清除*/

label.text('').addClass('valid');

},

/*重写校验元素获得焦点后的执行函数--增加[1.光标移入元素时的帮助提示,2.校验元素的高亮显示]两个功能点*/

onfocusin: function( element ) {

this.lastActive = element;

/*1.帮助提示功能*/

this.addWrapper(this.errorsFor(element)).hide();

var tip = $(element).attr('tip');

//alert(tip);

if(tip && $(element).parent().children(".tip").length === 0){

$(element).parent().append("<label class='tip'>" + tip + "</label>");

}

/*2.校验元素的高亮显示*/

$(element).addClass('highlight');

// Hide error label and remove error class on focus if enabled

if ( this.settings.focusCleanup ) {

if ( this.settings.unhighlight ) {

this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );

}

this.hideThese( this.errorsFor( element ) );

}

},

/*重写校验元素焦点离开时的执行函数--移除[1.添加的帮助提示,2.校验元素的高亮显示]*/

onfocusout: function( element ) {

/*1.帮助提示信息移除*/

$(element).parent().children(".tip").remove();

/*2.校验元素高亮样式移除*/

$(element).removeClass('highlight');

/*3.替换下面注释的原始代码,任何时候光标离开元素都触发校验功能*/

//this.element( element );

if ( !this.checkable( element ) && ( element.name inthis.submitted || !this.optional( element ) ) ) {

this.element( element );

}

}

});

//自定义方法,完成手机号码的验证

//name:自定义方法的名称,method:函数体, message:错误消息

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

//方法中又有三个参数:value:被验证的值, element:当前验证的dom对象,param:参数(多个即是数组)

//alert(value + "," + $(element).val() + "," + param[0] + "," + param[1]);

returnnew RegExp(/^1[3458]\d{9}$/).test(value);

}, "手机号码不正确");

标签: #jqueryvalidate