通过JS功能在中继器中启用文本框

Enable textbox inside Repeater through JS function

本文关键字:启用 文本 中继器 JS 功能 通过      更新时间:2023-09-26

我的文本框(asp.net)位于中继器详细信息部分的DIV和面板内(切换)如何访问java脚本函数中的文本框,使其在单击同一面板中的链接按钮时启用。

   <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:"文本框 1"未声明

由于其保护级别,它可能无法访问。

编辑 这是我在 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 

这是因为在中继器中,您的ID变得yourRepeaterID_TextBox1_Sequence使用 Javascript 来处理所有输入。像这样:

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

将 jquery 与选择器一起使用,如下所示:

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

问候乌鲁斯