Javascript 仅在更改的值上添加远程验证

Javascript 仅在更改的值上添加远程验证,javascript,jquery,jquery-validate,Javascript,Jquery,Jquery Validate,我一直试图在jquery验证插件上实现这一点,我尝试了我找到的几乎所有答案 但都不管用,所以我自己写了剧本,但还是不管用:/ 问题: 由于用户自己的电子邮件而导致的电子邮件重复检查问题 我所做的是: 我编写了一个函数,用EmailValid类将函数绑定到每个元素。 该绑定函数检查该值是否为默认值,如果是,则删除远程规则, else添加远程规则。 我还在文档就绪状态下运行“默认值检查函数” <input type="hidden" id="Email_default" value="<

我一直试图在jquery验证插件上实现这一点,我尝试了我找到的几乎所有答案

但都不管用,所以我自己写了剧本,但还是不管用:/

问题: 由于用户自己的电子邮件而导致的电子邮件重复检查问题

我所做的是:

我编写了一个函数,用EmailValid类将函数绑定到每个元素。 该绑定函数检查该值是否为默认值,如果是,则删除远程规则, else添加远程规则。 我还在文档就绪状态下运行“默认值检查函数”

<input type="hidden" id="Email_default" value="<?php echo $val; ?>" />
<input type="textbox" class="emailValid" id="Email" name="Email" value="<?php echo $val; ?>" /></td>
<script>
$(document).ready(function()
{
    $(".emailValid").each(
    function()
    {
        rules.rules[$(this).attr("id")]=
        {
            required: true,
            email: true,
            remote:"<?php echo base_url(); ?>home/checkmail"
        };
        rules.messages[$(this).attr("id")]=
        {
            required:"Please enter a valid email address",
            email:"Please enter a valid email address",
            remote:"This email address is already registered"
        };
        $("#editForm").validate(rules);
        setRemoteValidation(this);
        $(this).change(
        function()
        {
            setRemoteValidation(this);
        });
    });
});
var rules={
rules:{},
messages:{}
};
function setRemoteValidation(el)
{
    if($("#"+$(el).attr("id")+"_default").val()!=$(el).val())
    {
        $(el).rules("add", {
         rules:         {
            required: true,
            email: true,
            remote:"<?php echo base_url(); ?>home/checkmail"
        },
         messages: {
            required:"Please enter a valid email address",
            email:"Please enter a valid email address",
            remote:"This email address is already registered"
        }
        });
    }
    else
    {
        $(el).rules("remove","remote");
    }
}
</script>