停止自定义验证器在每次击键时触发

Sco*_*ott 9 asp.net-mvc jquery unobtrusive-javascript

我使用MVC DataAnnotations和jQuery不引人注目的javascript库编写了一个自定义验证器.它工作得很好.我现在唯一的问题是,在初始验证之后,如果用户编辑了该字段,则它会在每次击键时触发验证器.由于验证器访问Web服务以验证输入,我宁愿它只是在用户离开字段或提交表单时验证输入.有没有办法改变这种行为?这是我的代码:

<script type="text/javascript">
    $.validator.addMethod("validate_zipcode", function (value, element) {
        if (value == null || value.length == 0) {
            return true;
        }

        var isValid = false;
        $.ajax({
            async: false,
            dataType: "json",
            url: "/api/iszipvalid/" + value,
            success: function (response) {
                isValid = response;
            }
        });

        return isValid;
    });

    $.validator.unobtrusive.adapters.addBool('zipcode', 'validate_zipcode');
</script>
Run Code Online (Sandbox Code Playgroud)

And*_*ker 10

我不肯定这将与ASP.NET MVC一起使用(稍后我将启动一个测试项目),但validate允许您为所有验证实例设置默认值,如下所示:

$.validator.setDefaults({ onkeyup: false });
Run Code Online (Sandbox Code Playgroud)

如果你可以在MVC获得句柄之前添加该行,validate它可能会起作用,但它将禁用onkeyup所有形式的所有字段(根据你的帖子判断,似乎这样就可以了).

希望有所帮助.