没有为Javascript中的Validator控件获取内存

时间:2012-02-14 19:18:38

标签: javascript asp.net

我正在阅读一篇文章,使用下面提到的参考

来禁用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显示空值...为什么?

1 个答案:

答案 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