我正在阅读一篇文章,使用下面提到的参考
来禁用Javascript中的验证器http://geekswithblogs.net/jonasb/archive/2006/08/11/87708.aspx
我的练习页
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default4.aspx.cs" Inherits="Default4" %>
<!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></title>
<script language="javascript" type="text/javascript">
function RegexTester(ID) {
debugger;
var ID1 = document.getElementById('req');
// ValidatorEnable(
return false;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:RegularExpressionValidator ID="req" runat="server" ErrorMessage="hi" ControlToValidate="TextBox1"
ValidationExpression="^[0-9]{7,20}$" EnableClientScript="false">
</asp:RegularExpressionValidator>
<asp:TextBox ID="TextBox1" runat="server" CausesValidation="false"></asp:TextBox>
<asp:CheckBox ID="btn" runat="server" Text="Regex Tester" CausesValidation="false"
AutoPostBack="true" />
</div>
</form>
</body>
</html>
查询
在javascript函数中,我无法获取所需字段验证器控件的内存。我的意思是ID1显示空值...为什么?
答案 0 :(得分:1)
因为您的验证器是服务器端控件,ASP.NET将根据控件的id及其在标记中的位置为其创建唯一的客户端ID。
要获取验证者的客户端ID,您应该使用:
<%=req.ClientID %>
还有一种方法可以整齐地映射所有服务器端控件: http://jagregory.com/writings/how-to-use-clientids-in-javascript-without-the-ugliness/
如果您正在为ASP.NET 4.0进行开发,则可以使用ClientIDMode =“Predictable”来更好地控制生成ID的方式。 更多信息: http://weblogs.asp.net/asptest/archive/2009/01/06/asp-net-4-0-clientid-overview.aspx