使用 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_IsValidOnClientClick 事件中返回 true,因为 javascript 验证在此之后运行,因此 1 秒延迟允许正确设置 IsValid 属性。

【讨论】:

我认为Page_IsValid != null 检查是多余的。 == true 也是如此,因为 ASP.NET 似乎只将 truefalse 分配给 Page_IsValid。我认为您可以将条件简化为if (Page_IsValid)【参考方案4】:

如果您在单个页面上有多个验证组,那么您应该只检查某个组:

var isValid = Page_ClientValidate('GroupName');

【讨论】:

以上是关于使用 OnClientClick 检查 ValidationSummary 是不是有效的主要内容,如果未能解决你的问题,请参考以下文章

OnClientClick事件

使用参数对onClientClick方法调用javascript函数

如何使用带有 asp.net 的 jQuery 进行 onclientclick 回发

何时调用服务器 onClick 与 OnClientClick

Asp .NET 按钮 - OnClientClick="return function()" vs OnClientClick="function()"

OnClientClick 自定义消息框之前 Onclick 事件处理程序不起作用