none
ASP.NET 2.0 创建母版页导致js 获取不到''document.getElementById(...) RRS feed

  • 问题

  • 问题如题目。如果用母版页,就出现 获取不到''document.getElementById(。。)获取不到控件id 查看原文件发现控件id 前面是ctl00_ContentPlaceHolder1_控件ID.

    外部js

            function test1(ff)
             {
                var temp =ff.value;
                var myreg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/;
                if(!myreg.test(temp)||temp.length<1)
               {
                     alert('提示\n\n请输入有效的E_mail');
                     ff.value="";
                     ff.focus();
                    return false;
               }
            }



    MasterPage.master

    <%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>

    <!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 type="text/javascript" src="JScript.js"></script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
            </asp:contentplaceholder>
        </div>
        </form>
    </body>
    </html>

    Default3.aspx


    <%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" Title="Untitled Page" %>

    <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <div>
            <asp:TextBox ID="TextBox1"  runat="server"></asp:TextBox>
            <br />
            <br />
            <br />
            <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br />
            <asp:Button ID="Button1" OnClientClick="return test1(document.getElementById('<%=TextBox1.ClientID %>'))" runat="server" Text="Button" />
            <br />
            <br />
            <br />
            <br />
            <asp:LinkButton ID="LinkButton1" runat="server" OnClientClick="window.close();">关闭</asp:LinkButton></div>
    </asp:Content>




    如果不用母版页 就可以。发现问题的原因是 控件id不是真正id而是前面加上了ctl00_ContentPlaceHolder1_。怎么解决



    不用羡慕----那,只是个传说!
    2009年6月4日 5:09

答案

  • js修下

    // JScript 文件
     function test1(ff)
             {
                var ct=ff;          
                var temp =document.getElementById(ct).value;
                var myreg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/;
                if(temp==''||!myreg.test(temp))
               {
                     alert('提示\n\n邮箱不能为空,且输入有效的E_mail!');
                    
                     document.getElementById(ct).value="";
                     document.getElementById(ct).focus();
                    return false;
               }
    return true;
            }


    code-behind里边

    public partial class Default3 : System.Web.UI.Page
    {
       protected void Page_Load(object sender, EventArgs e)
       {
          this.Button1.OnClientClick = "return test1('" + TextBox1.ClientID + "')";
       }
       protected void Button1_Click(object sender, EventArgs e)
       {
          Response.Write("sdf");
       }
    }


    页面里边

     <asp:Button ID="Button1" runat="server"  Text="Button" OnClick="Button1_Click" />


    努力着就不会放弃!.net技术交流群 33083877http://hi.baidu.com/1987raymond
    • 已标记为答案 极度 2009年6月4日 6:22
    2009年6月4日 6:02
    版主

全部回复

  •     <asp:TextBox ID="TextBox1"  runat="server"></asp:TextBox><br />
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br />
        <asp:Button ID="Button2" OnClientClick='ShowMsg(fElement)' runat="server" Text="Button" />
        <script>
            var fElement = document.getElementById("<%=this.TextBox1.ClientID %>");
        </script>
    看源代码 OnClientClick 的代码被当成字符串转义了, 你按上面的文件就可以了
    知识改变命运,奋斗成就人生!
    2009年6月4日 5:52
    版主
  • js修下

    // JScript 文件
     function test1(ff)
             {
                var ct=ff;          
                var temp =document.getElementById(ct).value;
                var myreg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/;
                if(temp==''||!myreg.test(temp))
               {
                     alert('提示\n\n邮箱不能为空,且输入有效的E_mail!');
                    
                     document.getElementById(ct).value="";
                     document.getElementById(ct).focus();
                    return false;
               }
    return true;
            }


    code-behind里边

    public partial class Default3 : System.Web.UI.Page
    {
       protected void Page_Load(object sender, EventArgs e)
       {
          this.Button1.OnClientClick = "return test1('" + TextBox1.ClientID + "')";
       }
       protected void Button1_Click(object sender, EventArgs e)
       {
          Response.Write("sdf");
       }
    }


    页面里边

     <asp:Button ID="Button1" runat="server"  Text="Button" OnClick="Button1_Click" />


    努力着就不会放弃!.net技术交流群 33083877http://hi.baidu.com/1987raymond
    • 已标记为答案 极度 2009年6月4日 6:22
    2009年6月4日 6:02
    版主