zoukankan      html  css  js  c++  java
  • jquery.validate中使用remote,remote相同值不校验问题解决

    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/

  • 相关阅读:
    python 自定义模块路径问题
    好书一下
    批量修改shell文件
    查看内存占用,排名最高开始
    prosql写法示例
    curl base64 python 请求api地址进行测试服务是否正常
    linxu家目录$ 或者是家目录丢失
    docker 添加普通用户权限
    关系型数据库和非关系型数据库的内在区别
    MapperScan的工作,Spring-Mybatis怎么自动getMapper
  • 原文地址:https://www.cnblogs.com/fanshuyao/p/6227164.html
Copyright © 2011-2022 走看看