如何隐藏div(在客户端上)客户端验证失败?

时间:2010-01-19 13:35:57

标签: asp.net validation

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

3 个答案:

答案 0 :(得分:0)

您可以使用Page.RegisterClientScriptBlock Method] 1

从服务器端代码调用javascript函数。

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

然后在javascript函数中,您可以将div的显示更改为

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

或者如果你给div属性runat =“server”那么你可以从服务器端代码访问div并将其显示更改为阻止

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

答案 1 :(得分:0)

使用ASP.NET custom validator

如果由于某种原因您不能/不想这样做,请使用ClientScriptManager.RegisterOnSubmitStatement方法,并确保在客户端脚本中返回false,如果您正在验证的内容失败。

答案 2 :(得分: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