问题说明:
在jquery.validate中使用remote,但是remote只是校验第一次,如果通过了,下次及之后都不会再向服务器请求。
例如验证码,先输入验证码,校验通过后,然后点击换一个验证码,验证码的校验一样是通过的,因为remote没有再向服务器重新发送校验请求。
原因是jquery.validate代码中使用了如下代码:
意思是如果之前已经校验了,则直接使用之前的验证结果。
if ( previous.old === value ) { return previous.valid; }
解决方法一:(不推荐)
在jquery.validate.js中找到代码,然后把上面的代码注释掉。
但这种方法不被推荐,怕影响到使用功能。
解决方法二:既然有数据之前的验证结果,我们就可以把之前的验证结果清除。
$("#mobileRand,#compName").change(function(){
clearPreviousValue();
});
function clearPreviousValue(){
if($(".remote").data("previousValue")){
$(".remote").data("previousValue").old = null;
}
};