首页 > Web开发 > 详细

jquery.validate中使用remote,remote相同值不校验问题解决

时间:2015-09-25 04:22:29      阅读:315      评论:0      收藏:0      [点我收藏+]

jquery.validate中使用remote,

remote相同值不校验问题解决

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

蕃薯耀 2015年9月24日 16:18:45 星期四

http://fanshuyao.iteye.com/

?

?

remote使用方法:

?

?

remote: {
    async:false,//默认为异步请求,设置false为同步
    url: $("#basePath").val() + "/checkPhoneValidateCode",    
    //后台处理程序。远程地址只能输出 "true" 或 "false",不能有其他输出。
    type: "post"               //数据发送方式
}

?remote没有结果处理函数,服务器校验后只能输出 "true" 或 "false",不能有其他输出。

remote默认会把校验的属性和值作为参数传到服务器。

?

?而data可以增加其他参数。

?

?

remote: {
    url: "check-email.php",     //后台处理程序
    type: "post",               //数据发送方式
    dataType: "json",           //接受数据格式   
    data: {                     //要传递的数据
        username: function() {
            return $("#username").val();
        }
    }
}

?

?

?

?

问题描述:

在jquery.validate中使用remote,但是remote只是校验第一次,如果通过了,下次及之后都不会再向服务器请求。

例如验证码,先输入验证码,校验通过后,然后点击换一个验证码,验证码的校验一样是通过的,因为remote没有再向服务器重新发送校验请求。

?

原因是jquery.validate代码中使用了如下代码:

意思是如果之前已经校验了,则直接使用之前的验证结果。

?

?

if ( previous.old === value ) {
    return previous.valid;
}  

?

?

解决方法一:(不推荐)

jquery.validate.js中找到代码,然后把上面的代码注释掉。

但这种方法不被推荐,怕影响到使用功能。

?

解决方法二:

既然有数据之前的验证结果,我们就可以把之前的验证结果清除。

($(".remote")为jquery选择器,.remote为自己设置的Class。)

?

?

/**
 * 移除validate的缓存数据
 */
function clearPreviousValue(){
    if($(".remote").data("previousValue")){
    	$(".remote").removeData("previousValue");
    }
};

?

?

或者设置为Null

?

?

/**
 * 移除validate的缓存数据
 */
function clearPreviousValue(){
    if($(".remote").data("previousValue")){
    	$(".remote").data("previousValue").old = null;
    }
};

?

?

可以给需要远程校验的属性加上一个change事件,清除之前校验结果,这样就方便很多。

?

$("#phone,#phoneValidateCode").change(function(){
	clearPreviousValue();
});

?

?

?

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

蕃薯耀 2015年9月24日 16:18:45 星期四

http://fanshuyao.iteye.com/

?

?

?

?

?

?

?

?

jquery.validate中使用remote,remote相同值不校验问题解决

原文:http://fanshuyao.iteye.com/blog/2245867

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!