joe*_*not 24 asp.net validation validationsummary
ASP.NET 2.0.假设我有两个验证组valGrpOne和valGrpTwo; 和两个验证摘要valSummOne和valSummTwo; 分解部分的原因纯粹是美学.一个提交按钮,触发两个组的验证.
现在我想触发客户端验证,并希望同时显示BOTH验证摘要;
所以我设置了一个Javascript函数,它被调用btnSubmit,并且在这个函数中我调用Page_ClientValidate("valGrpOne")
并Page_ClientValidate("valGrpTwo")
连续; 问题只是一次显示一个摘要(但我真的希望两者都显示!)
有关如何从客户端代码同时显示两个验证摘要的任何想法?
非常类似于以下问题,它为服务器端提供了答案. 使用单个按钮触发多个验证组?
joe*_*not 31
好的,所以答案并不简单.似乎客户端验证的默认行为是仅显示刚刚验证过的最新组/摘要.但是一些Javascript tweeking给了我一个可接受的答案.
随意提供改进.
<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>
Run Code Online (Sandbox Code Playgroud)
小智 5
这是用于针对多个组进行验证的另一种简单且通用的方法。
// Page_ClientValidate only shows errors from the last validation group.
// This method allows showing for multiple groups
function Page_ClientValidateMultiple(groups) {
var invalidIdxs = [];
var result = true;
// run validation from each group and remember failures
for (var g = 0; g < groups.length; g++) {
result = Page_ClientValidate(groups[g]) && result;
for (var v = 0; v < Page_Validators.length; v++)
if (!Page_Validators[v].isvalid)
invalidIdxs.push(v);
}
// re-show any failures
for (var i = 0; i < invalidIdxs.length; i++) {
ValidatorValidate(Page_Validators[invalidIdxs[i]]);
}
// return false if any of the groups failed
return result;
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
54648 次 |
最近记录: |