2013-11-05 62 views
0

我的文本框(asp.net)位於DIV和麪板中的repeater的詳細信息部分(toggle) 如何訪問java腳本功能中的文本框,以使其在點擊鏈接按鈕在同一個面板中。 通過JS功能在Repeater內啓用文本框

<div id='d<%# DataBinder.Eval(Container, "ItemIndex") %>' class="details"> 

    <asp:Panel ID="Panel2" runat="server" Height="195px" BackColor="gray" Font-Bold="False" ForeColor="Maroon"> 
    <br /> 
     <asp:Label ID="Label1" runat="server" Text="LicenseID"></asp:Label>&nbsp;&nbsp;&nbsp;&nbsp; 

     <asp:TextBox ID="TextBox1" runat="server" Text='<%# DataBinder.Eval (Container.DataItem,"LicenseID") %>' Enabled="False" BackColor="Gray" BorderStyle="None"></asp:TextBox> 

我嘗試這樣的方式,但錯誤是表示

<script type="text/javascript"> 
     function MyJSFunction() { 
      var tet = document.getElementById("<%=TextBox1.ClientID %>"); 

         } 
</script> 

但以下錯誤消息表示。

BC30451: 'TextBox1的' 未聲明

它可能無法訪問由於其保護級別。

編輯 這是我在vb.net代碼。但是轉換成js函數,我發現錯誤

 If e.CommandName = "edit" Then 
     DirectCast(e.Item.FindControl("TextBox2"), TextBox).Enabled = True 
     DirectCast(e.Item.FindControl("Textbox2"), TextBox).BorderStyle =BorderStyle.NotSet 
     DirectCast(e.Item.FindControl("Textbox2"), TextBox).BackColor = Drawing.Color.White  
     end if 

回答

0

這是因爲到你的ID變成yourRepeaterID_TextBox1_Sequence 使用JavaScript來GER所有輸入的中繼器。事情是這樣的:

<script> 
    function MyJSFunction() { 
     var tb = document.getElementsByTagName('INPUT'); 
     for (var i = 0; i < tb.length; i++) { 
     if (tb[i].type != "text") { continue; } // this is not TextBox 
     // do whatever 
     } 
    } 
    </script> 
+0

非常感謝,我已經寫了vb.net代碼做相同的,但到避免回帖我正在重新編寫代碼。以下是我必須重寫的服務器端代碼。如果e.CommandName =「edit」然後 DirectCast(e.Item.FindControl(「TextBox2」),TextBox).Enabled = True DirectCast(e.Item.FindControl(「Textbox2」),TextBox).BorderStyle = BorderStyle .NotSet DirectCast(e.Item.FindControl(「Textbox2」),TextBox).BackColor = Drawing.Color.White end if –

0

使用jQuery wtih選擇這樣的:

var textBox = $(".details input[type='text'][id*='TextBox1']"); 

問候, 烏羅什

+0

如何啓用中繼器文本框 –