asp.net - 具有多个验证组的 Page_ClientValidate() - 如何同时显示多个摘要?

标签 asp.net validation validationsummary

ASP.NET 2.0。假设我有两个验证组 valGrpOne 和 valGrpTwo;以及两个验证摘要 valSummOne 和 valSummTwo;分解部分的原因纯粹是为了美观。一个提交按钮可触发对两组的验证。

现在我想触发客户端验证,并希望同时显示两个验证摘要;

所以我设置了一个在 btnSubmit 上调用的 Javascript 函数,在这个函数中我连续调用 Page_ClientValidate("valGrpOne")Page_ClientValidate("valGrpTwo") ;问题是一次只显示一个摘要(但我真的希望两者都显示!)

关于如何从客户端代码同时显示两个验证摘要有什么想法吗?

与以下问题非常相似,该问题针对服务器端进行回答。 Triggering multiple validation groups with a single button?

最佳答案

好吧,所以答案并不简单。客户端验证的默认行为似乎是仅显示刚刚验证的最新组/摘要。但一些 Javascript 调整给了我一个可以接受的答案。

请随意提供改进。

   <script type="text/javascript" language="javascript">
    /* Manual client-side validation of Validator Groups */
    function fnJSOnFormSubmit() {
        var isGrpOneValid = Page_ClientValidate("valGrpOne");
        var isGrpTwoValid = Page_ClientValidate("valGrpTwo");

        var i;
        for (i = 0; i < Page_Validators.length; i++) { 
            ValidatorValidate(Page_Validators[i]); //this forces validation in all groups
        }

        //display all summaries.
        for (i = 0; i < Page_ValidationSummaries.length; i++) {
            summary = Page_ValidationSummaries[i];
            //does this summary need to be displayed?
            if (fnJSDisplaySummary(summary.validationGroup)) {
                summary.style.display = ""; //"none"; "inline";
            }
        }

        if (isGrpOneValid && isGrpTwoValid)
            return true; //postback only when BOTH validations pass.
        else
            return false;
    }


    /* determines if a Validation Summary for a given group needs to display */
    function fnJSDisplaySummary(valGrp) {
        var rtnVal = false; 
        for (i = 0; i < Page_Validators.length; i++) {
            if (Page_Validators[i].validationGroup == valGrp) { 
                if (!Page_Validators[i].isvalid) { //at least one is not valid.
                    rtnVal = true;
                    break; //exit for-loop, we are done.
                }
            }
        }
        return rtnVal;
    }
</script>

关于asp.net - 具有多个验证组的 Page_ClientValidate() - 如何同时显示多个摘要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1560812/

相关文章:

asp.net-mvc - Html.ValidationSummary(false, "message") 始终显示,即使在页面加载时也是如此

asp.net - 安装 .net 4.5 后,某些性能计数器显示错误值

validation - Mongoose 验证竞争条件?

javascript - 在外部 JavaScript 验证表单后如何调用代码隐藏方法?

javascript - AngularJS 输入监视 $valid 或 $error

silverlight - 如何禁用 Silverlight DataGrid 验证页脚?

asp.net - IIS Web 部署 - 创建虚拟目录?

c# - Substring() 的问题 - ArgumentOutOfRangeException

c# - asp.net "The DefaultButton of ' Panel1 ' must be the ID of a control of type IButtonControl."错误

javascript - 验证摘要 javascript 错误