2010-01-19 115 views
3

我正在用asp.net验证控件制作一个asp.net页面。如果验证失败,我想显示一个div(在客户端)。我在哪里做这个?我无法找到访问客户端上的OnValidate事件的方法。我可以在服务器上执行此操作,但我宁愿在客户端上执行此操作。如何隐藏div(在客户端)客户端验证失败?

回答

0

,您可以调用从服务器端代码中使用Page.RegisterClientScriptBlock方法] javascript函数1

String scriptString = "<script type='text/javascript'>MakeDivVisible();</script>"; 
this.RegisterClientScriptBlock("clientScript", scriptString); 

然后在javascript函数可以改变的div来显示像块

document.getElementById("divId").style.display = 'block'; 

或者如果你给div属性runat =“server”,那么你可以访问div的s erver side code并将其显示更改为块

divId.Style["display"] = "block"; 
+0

我只想在验证失败时执行此操作。只有提交。并在客户端。 – cerhart 2010-01-19 13:46:22

+0

然后,您可以在提交函数中将客户端本身的JavaScript代码写入并作为最后一步返回false。 – rahul 2010-01-19 13:51:01

+0

问题是没有提交功能。我正在使用asp.net验证控件。 – cerhart 2010-01-19 14:12:19

0

您将需要在客户端和服务器上进行验证,因为您无法保证客户端已打开JavaScript。以下显示了在客户端完成此操作的步骤,因为在服务器端实现此操作应该是微不足道的。

给出一个简单的div如以下几点:

<div id="divErrors" runat="server" style="display: none;"> 
    This should only appear when validation fails. 
</div> 

添加以下JavaScript到您的网页:

<script language="javascript" type="text/javascript"> 
    function showErrors() { 
     if (!Page_IsValid) { 
      document.getElementById('divErrors').style.display = 'block'; 
     } else { 
      document.getElementById('divErrors').style.display = 'none'; 
     } 
    } 
</script> 

最后,注册提交脚本调用这个新showErrors功能(在Page_Load事件):

If Not Page.IsPostBack() Then 
    Dim scriptName As String = "OnSubmitScript" 
    Dim scriptType As Type = Me.GetType() 
    Dim script As ClientScriptManager = Page.ClientScript 
    If Not script.IsOnSubmitStatementRegistered(scriptType, scriptName) Then 
     script.RegisterOnSubmitStatement(scriptType, _ 
         scriptName, "showErrors();") 
    End If 
End If