jquery - 覆盖 jQuery 验证 MVC4 中的默认设置

标签 jquery asp.net-mvc-4 jquery-validate unobtrusive-validation

要覆盖查询验证插件,请在 plaugsin document 中,推荐的方式是:

$(".selector").validate({
    invalidHandler: function(form, validator) {
      var errors = validator.numberOfInvalids();
      if (errors) {
        var message = errors == 1
          ? 'You missed 1 field. It has been highlighted'
          : 'You missed ' + errors + ' fields. They have been highlighted';
        $("div.error span").html(message);
        $("div.error").show();
      } else {
        $("div.error").hide();
      }
    }
})

但是,它在带有 jquery-1.7.1.js 的 MVC4 中不起作用。看来 jquery.validate.unobtrusive.js 阻止调用覆盖句柄。如果不包含此文件,则调用覆盖句柄并显示消息。有人有同样的问题吗?

最佳答案

我终于按照 Bruce 的建议让它工作了。诀窍是在连接您的自定义处理程序之前删除旧的处理程序。您可以以相同的方式覆盖其他设置。微软应该加快修复其 jquery.validate.unobtrusive.js 以与 jquery.validate 配合使用。已报道unobtrusive [version="2.0.20710.0"] breaks jquery-1.9.0 .

$('form').each(function() {
    $(this).unbind("invalid-form.validate"); // remove old handler!!!!
    $(this).bind("invalid-form.validate", function(e, validator) {
        //alert("ok");
        var errors = validator.numberOfInvalids();
        if (errors) {
            var message = errors == 1
                ? 'You missed 1 field. It has been highlighted'
                : 'You missed ' + errors + ' fields.  They have been highlighted';
            $("div.error span").html(message);
            $("div.error").show();
        } else {
            $("div.error").hide();
        }
    });
});

关于jquery - 覆盖 jQuery 验证 MVC4 中的默认设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14523602/

相关文章:

javascript - MYSQL Count As, Group By, JSON 等效

javascript - 从左向右滑动 LI 无需滚动 CSS 或 JS?

javascript - 如何使用 jQuery Validate 的 Angular 实现来应用类级别验证规则

jquery - 组验证错误后文本框的位置正在改变

java - 找不到从 HttpRequest : 获取参数值的正确方法

jquery - 如何在 Ajax.Begin 表单中使用 onBegin 验证请求?

c# - OWIN 启动类丢失

c# - 添加分离实体时延迟加载不起作用

带有两个提交按钮的 jQuery 验证插件?

javascript - 基于html属性的动态jquery选择器