jquery - 更新 'real time'中的验证摘要

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

您好,我正在使用带有客户端验证的 MVC4。这非常适合在字段旁边显示验证消息。

我添加了验证摘要:

 @Html.ValidationSummary(false)

这对客户端来说是有效的。但我希望它有不同的行为;目前,验证摘要中的消息仅在单击提交按钮时才会更改。我希望它们能够以与每个字段的验证消息类似的方式动态填充。

有人可以建议一种方法来实现这一目标吗?

任何有关触发摘要更新的信息都会很棒。

最佳答案

我已将验证摘要设置为“实时”更新,同时还考虑了以下因素:

  1. 在摘要可见时更新摘要(页面验证/提交后)
  2. 当一切有效时清除摘要

让我们提取验证器,重写 showErrors() 并实现我们的逻辑:

var validator = $('form').data('validator');
validator.settings.showErrors = function (map, errors) {
    this.defaultShowErrors();
    if ($('div[data-valmsg-summary=true] li:visible').length) {
        this.checkForm();
        if (this.errorList.length)
            $(this.currentForm).triggerHandler("invalid-form", [this]);
        else
            $(this.currentForm).resetSummary();
    }
}

由于我在整个网站上使用此解决方案,因此我创建了以下 init(onready):

$('form').each(function () {
    var validator = $(this).data('validator');
    if (validator) {
        validator.settings.showErrors = function (map, errors) {
            this.defaultShowErrors();
            if ($('div[data-valmsg-summary=true] li:visible').length) {
                this.checkForm();
                if (this.errorList.length)
                    $(this.currentForm).triggerHandler("invalid-form", [this]);
                else
                    $(this.currentForm).resetSummary();
            }
        };
    }
});

这是上面使用的resetSummary:

jQuery.fn.resetSummary = function () {
    var form = this.is('form') ? this : this.closest('form');
    form.find("[data-valmsg-summary=true]")
        .removeClass("validation-summary-errors")
        .addClass("validation-summary-valid")
        .find("ul")
        .empty();
    return this;
};

关于jquery - 更新 'real time'中的验证摘要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13302638/

相关文章:

javascript - Webhoster 插入了一个破坏我的代码的 javascript 如何删除它?

c# - html 帮助程序扩展方法上的多个通用参数

asp.net - 允许在文本框中使用 HTML

asp.net-mvc - ASP.NET MVC 页面不通过 3G 或某些代理服务器提供服务

c# - 无法将类型为 'Newtonsoft.Json.Linq.JArray' 的对象转换为类型 'System.Collections.Generic.List`

asp.net-mvc - MVC 在导航栏中显示登录用户的名称

javascript - 使用 jQuery 解析文本

javascript - 溢出的可滚动 div :hidden in FireFox 3. 6.x

javascript - 如何检查用户是否正在刷新页面或导航到其他页面

javascript - 包含外部 javascript 的 ASP.NET MVC 4 问题