我使用 MVC DataAnnotations 和 jQuery unobtrusive 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>
最佳答案
我不肯定这将与 ASP.NET MVC 结合使用(我稍后将启动一个测试项目),但验证允许您 set defaults对于像这样的所有 validate 实例:
$.validator.setDefaults({ onkeyup: false });
如果您可以在 MVC 获取 validate
句柄之前添加该行,它可能会起作用,但它会禁用所有表单中的所有字段的 onkeyup
(根据您的帖子,看来这样就可以了)。
希望有帮助。
关于jquery - 阻止自定义验证器在每次击键时触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4970443/