asp.net js获取控件ID

以文本框为例:

一、未使用母版页

js可以使用document.getElementById('控件的ID')形式,也可以使用document.getElementById('<%=控件的ID.ClientID %>')的形式,代码如下:

 1 <head runat="server">

 2     <title></title>

 3     <script type="text/javascript">

 4         function change() {

 5             var control = document.getElementById('TextBox1');

 6             //或者是下面的方式

 7             //var control = document.getElementById('<%=TextBox1.ClientID %>');

 8             if (control.value != "") {

 9                 alert("输入的文本:" + control.value);

10             }

11         }

12     </script>

13 </head>

14 <body>

15     <form id="form1" runat="server">

16     <div>

17         <asp:TextBox ID="TextBox1" runat="server" onblur="change()"></asp:TextBox>

18     </div>

19     </form>

20 </body>

如果是HTML <input>标签,取得id的方式和服务器控件取得ID的方式一样,代码如下:

 1 <head runat="server">

 2     <title></title>

 3     <script type="text/javascript">

 4         function change() {

 5             var control = document.getElementById('Text1');

 6             if (control.value != "") {

 7                 alert("输入的文本:" + control.value);

 8             }

 9         }

10     </script>

11 </head>

12 <body>

13     <form id="form1" runat="server">

14     <div>

15         <input id="Text1" type="text" onblur="change()" />

16     </div>

17     </form>

18 </body>

注意:使用HTML <input>标签,想在后台取得其Value值(string text = this.Text1.Value;),或者在js用document.getElementById('<%=Text1.ClientID %>');的形式获取控件id,需要变为服务器控件,加上runat="server",即<input id="Text1" type="text" runat="server" onblur="change()">即可,当然,即使加上runat="server",js也可以使用document.getElementById('Text1');获取其id。

二、使用母版页

①对于标准服务器控件,如<asp:TextBox>,js获取其控件ID必须使用document.getElementById('<%=TextBox1.ClientID %>');获取其ID,代码如下:

 1 <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">

 2 <script type="text/javascript">

 3     function change() {

 4         //var control = document.getElementById('TextBox1');//找不到TextBox1对象

 5         var control = document.getElementById('TextBox1.ClientID');

 6         if (control.value != "") {

 7             alert("文本为:" + control.value);

 8         }

 9     }

10 </script>

11 </asp:Content>

12 <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">

13     <asp:TextBox ID="TextBox1" runat="server" onblur="change()"></asp:TextBox>

14 </asp:Content>

如果使用document.getElementById('TextBox1');会出现如下错误:

asp.net js获取控件ID

②对于HTML <input>标签,如果作为服务器控件,即有runat="server",js获取其id使用document.getElementById('<%=Text1.ClientID %>');,如果不作为服务器控件,使用document.getElementById('Text1');获取其id。否则也会出现上图的错误,代码如下:

 1 <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">

 2 <script type="text/javascript">

 3     function change() {

 4         var control = document.getElementById('Text1.ClientID');//作为服务器控件获取其id

 5         //var control = document.getElementById('Tex2');//作为HTML <input>标签,获取其id

 6         if (control.value != "") {

 7             alert("文本为:" + control.value);

 8         }

 9     }

10 </script>

11 </asp:Content>

12 <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">

13     <input id="Text1" type="text" runat="server" onblur="change()"/>

14     <%--<input id="Text2" type="text" onblur="change()"/>--%>

15 </asp:Content>

注:如果想在后台获取其文本值,必须将其作为服务器控件,即加上runat="server"

③对于服务器控件,如果在母版页body内的ContentPlaceHolder控件加上ClientIDMode="Static" 属性后,内容页中js获取服务器控件id就可以直接使用其ID名(不用使用<%=控件ID.ClientID %>),母版页代码如下:

 1 <head runat="server">

 2     <title></title>

 3     <asp:ContentPlaceHolder ID="head" runat="server">

 4     </asp:ContentPlaceHolder>

 5 </head>

 6 <body>

 7     <form id="form1" runat="server">

 8     <div>

 9         <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server" ClientIDMode="Static">

10         

11         </asp:ContentPlaceHolder>

12     </div>

13     </form>

14 </body>

内容页代码如下:

 1 <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">

 2 <script type="text/javascript">

 3     function change(id) {

 4         var control = document.getElementById(id);

 5         if (control.value != "") {

 6             alert("文本为:" + control.value);

 7         }

 8     }

 9 </script>

10 </asp:Content>

11 <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">

12     <input id="Text1" type="text" runat="server" onblur="change(this.id)"/><br />

13     <asp:TextBox ID="TextBox1" runat="server" onblur="change(this.id)"></asp:TextBox>

14 </asp:Content>

 

你可能感兴趣的:(asp.net)