使用 OnClientClick 检查 ValidationSummary 是不是有效
Posted
技术标签:
【中文标题】使用 OnClientClick 检查 ValidationSummary 是不是有效【英文标题】:Check if ValidationSummary is Valid using OnClientClick使用 OnClientClick 检查 ValidationSummary 是否有效 【发布时间】:2010-09-29 17:17:12 【问题描述】:有没有办法在按钮的 OnClientClick 事件中使用 javascript 来检查 ValidationSummary 控件的 IsValid 属性是否设置为 true?
我要做的是在上传页面上显示一条消息,上面写着“请稍候,您的文件正在上传”,但如果我使用 javascript 来显示该消息,即使 ValidationSummary 出现错误,它也会显示,因此该消息与下面的错误一起显示,这使用户感到困惑。
【问题讨论】:
【参考方案1】:我想你应该做的是dissable the uppload button 并在上传过程中显示一条消息。例如,通过使用 ajax 面板和进度模板。
【讨论】:
问题不在上传过程中,而是在 ValidationSummary 控件给出用户必须纠正的错误时。我需要知道有一个错误并且不显示“等待”的 div【参考方案2】:我认为这会满足您的要求。
var isValid = false;
if (typeof(Page_ClientValidate) == 'function')
isValid = Page_ClientValidate();
if(isValid)
ShowMessage(...);
【讨论】:
另外,它会重新验证。我认为接受答案中的方法更好,因为它不应该有这些问题。【参考方案3】:如果其他人需要这样的东西,这是我的解决方案:
在按钮的 OnClientClick 事件中,我正在调用一个名为 showContent() 的 JavaScript 函数。在这个函数中,我使用 setTimeout 调用第二个函数来检查页面的 IsValid 属性:
function showContent()
setTimeout("delayedShow()", 1);
function delayedShow()
if (Page_IsValid != null && Page_IsValid == true)
document.getElementById('divUploading').style.display = "block";
Page_IsValid
在 OnClientClick
事件中返回 true,因为 javascript 验证在此之后运行,因此 1 秒延迟允许正确设置 IsValid 属性。
【讨论】:
我认为Page_IsValid != null
检查是多余的。 == true
也是如此,因为 ASP.NET 似乎只将 true
或 false
分配给 Page_IsValid
。我认为您可以将条件简化为if (Page_IsValid)
。【参考方案4】:
如果您在单个页面上有多个验证组,那么您应该只检查某个组:
var isValid = Page_ClientValidate('GroupName');
【讨论】:
以上是关于使用 OnClientClick 检查 ValidationSummary 是不是有效的主要内容,如果未能解决你的问题,请参考以下文章
使用参数对onClientClick方法调用javascript函数
如何使用带有 asp.net 的 jQuery 进行 onclientclick 回发
何时调用服务器 onClick 与 OnClientClick
Asp .NET 按钮 - OnClientClick="return function()" vs OnClientClick="function()"