积极答复者
怎样在程序获得验证控件是否有效?

问题
答案
-
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="TestWebDemo.WebForm1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Hidden Demo</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="TextBox1" EnableClientScript="False"
ErrorMessage="You must fill in it!" ForeColor="#FF3300">*</asp:RequiredFieldValidator>
</div>
</form>
</body>
</html>using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;namespace TestWebDemo
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}protected void Button1_Click(object sender, EventArgs e)
{
RequiredFieldValidator1.Validate();
if (RequiredFieldValidator1.IsValid == false)
{
Button1.Visible = false;
}
}
}
}- 已标记为答案 ThankfulHeartModerator 2010年8月25日 1:08
- 取消答案标记 youer3 2010年8月27日 11:43
- 已标记为答案 youer3 2010年11月16日 1:13
-
你好
根据你的要求写出来的
<script type="text/javascript" >
function change()
{
var mes=document.getElementById("mes");
var btn=document.getElementById("btn");
var height=document.getElementById("text");
if(height.value=="")
{ var mes=document.getElementById("mes");
mes.style.display='block';
btn.style.display='none';
}
else
{
mes.style.display='none';
btn.style.display='block';
}
}
</script>html:
<table>
<tr>
<td>
<input id="text" runat="server" type="text" onkeyup="change()" />
</td>
<td>
<div id="mes" visible="true" >不能为空</div> <div id="btn" style="display:none" ><button id="btnrrr" runat="server" >按钮</button></div>
</td>
</tr>
</table>希望对你有帮助!
- 已标记为答案 youer3 2010年11月16日 1:15
-
Dong_Wei的这个是要回传以后才会有效果,但一般情况下,验证控件是在客户端完成并阻止回传的,因此我改造一下DongWei的代码,如下:
<script type="text/javascript"> //抓取原ASP.NET客户端验证关键路径 var oldValidatorValidate = ValidatorValidate; //偷换方法 ValidatorValidate = ClientValidate; function ClientValidate(val, validationGroup, event) { //继续原路径,不破坏验证原理 oldValidatorValidate(val, validationGroup, event); //目的就是加入自定义方法的调用 OnValidateFinished(val); } function OnValidateFinished(arg) { var validatorID = '<%= this.rfv.ClientID %>'; //因为多个验证控件的时候,都会执行该方法,这种情况下,Button的显示隐藏只受最后一个验证控件的影响了 //所以判断一下有验证控件 if (arg.id == validatorID) { var btn = document.getElementById('<%= this.btnCommit.ClientID %>'); btn.style.display = arg.isvalid ? "inline" : "none"; } } </script> <div> <asp:Button ID="btnCommit" runat="server" Text="Button" CausesValidation="true" /> <asp:TextBox ID="txtName" runat="server"></asp:TextBox> <asp:RequiredFieldValidator ID="rfv" runat="server" ControlToValidate="txtName" Display="Dynamic" ErrorMessage="这玩意儿是必填的"></asp:RequiredFieldValidator> </div>
Love Your Neighbor as Yourself- 已标记为答案 youer3 2010年11月16日 1:15
全部回复
-
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="TestWebDemo.WebForm1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Hidden Demo</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="TextBox1" EnableClientScript="False"
ErrorMessage="You must fill in it!" ForeColor="#FF3300">*</asp:RequiredFieldValidator>
</div>
</form>
</body>
</html>using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;namespace TestWebDemo
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}protected void Button1_Click(object sender, EventArgs e)
{
RequiredFieldValidator1.Validate();
if (RequiredFieldValidator1.IsValid == false)
{
Button1.Visible = false;
}
}
}
}- 已标记为答案 ThankfulHeartModerator 2010年8月25日 1:08
- 取消答案标记 youer3 2010年8月27日 11:43
- 已标记为答案 youer3 2010年11月16日 1:13
-
你好
根据你的要求写出来的
<script type="text/javascript" >
function change()
{
var mes=document.getElementById("mes");
var btn=document.getElementById("btn");
var height=document.getElementById("text");
if(height.value=="")
{ var mes=document.getElementById("mes");
mes.style.display='block';
btn.style.display='none';
}
else
{
mes.style.display='none';
btn.style.display='block';
}
}
</script>html:
<table>
<tr>
<td>
<input id="text" runat="server" type="text" onkeyup="change()" />
</td>
<td>
<div id="mes" visible="true" >不能为空</div> <div id="btn" style="display:none" ><button id="btnrrr" runat="server" >按钮</button></div>
</td>
</tr>
</table>希望对你有帮助!
- 已标记为答案 youer3 2010年11月16日 1:15
-
Dong_Wei的这个是要回传以后才会有效果,但一般情况下,验证控件是在客户端完成并阻止回传的,因此我改造一下DongWei的代码,如下:
<script type="text/javascript"> //抓取原ASP.NET客户端验证关键路径 var oldValidatorValidate = ValidatorValidate; //偷换方法 ValidatorValidate = ClientValidate; function ClientValidate(val, validationGroup, event) { //继续原路径,不破坏验证原理 oldValidatorValidate(val, validationGroup, event); //目的就是加入自定义方法的调用 OnValidateFinished(val); } function OnValidateFinished(arg) { var validatorID = '<%= this.rfv.ClientID %>'; //因为多个验证控件的时候,都会执行该方法,这种情况下,Button的显示隐藏只受最后一个验证控件的影响了 //所以判断一下有验证控件 if (arg.id == validatorID) { var btn = document.getElementById('<%= this.btnCommit.ClientID %>'); btn.style.display = arg.isvalid ? "inline" : "none"; } } </script> <div> <asp:Button ID="btnCommit" runat="server" Text="Button" CausesValidation="true" /> <asp:TextBox ID="txtName" runat="server"></asp:TextBox> <asp:RequiredFieldValidator ID="rfv" runat="server" ControlToValidate="txtName" Display="Dynamic" ErrorMessage="这玩意儿是必填的"></asp:RequiredFieldValidator> </div>
Love Your Neighbor as Yourself- 已标记为答案 youer3 2010年11月16日 1:15