如何隐藏div(在客户端)客户端验证失败?
问题描述:
我正在用asp.net验证控件制作一个asp.net页面。如果验证失败,我想显示一个div(在客户端)。我在哪里做这个?我无法找到访问客户端上的OnValidate事件的方法。我可以在服务器上执行此操作,但我宁愿在客户端上执行此操作。如何隐藏div(在客户端)客户端验证失败?
答
使用ASP.NET custom validator。
如果由于某种原因您不能/不想这样做,请使用ClientScriptManager.RegisterOnSubmitStatement方法,并确保在客户端脚本中返回false,如果您验证的任何内容失败。
答
,您可以调用从服务器端代码中使用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";
答
您将需要在客户端和服务器上进行验证,因为您无法保证客户端已打开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
我只想在验证失败时执行此操作。只有提交。并在客户端。 – cerhart 2010-01-19 13:46:22
然后,您可以在提交函数中将客户端本身的JavaScript代码写入并作为最后一步返回false。 – rahul 2010-01-19 13:51:01
问题是没有提交功能。我正在使用asp.net验证控件。 – cerhart 2010-01-19 14:12:19