javascript - 如何使用 JavaScript 使 Repeater 内的 TextArea 在单击按钮时显示?

标签 javascript c# jquery asp.net

我试图让中继器内的文本区域在单击按钮时显示(该按钮也与文本区域一起位于同一个中继器内)

function ShowTextArea()
    {
        var rpt = document.getElementById("<%= Repeater1.ClientID%>");
        var inputs = rpt.getElementsByTagName("input");
        for (var i = 0; i < inputs.length; i++)
        {
            if (inputs[i].click())
            {
                $("#txtcmt2").show();
            }
        }
    }

这是中继器:

<asp:Repeater ID="Repeater1" runat="server" DataSourceID="comment" OnItemDataBound="Repeater1_ItemDataBound" OnItemCreated="Repeater1_ItemCreated">
                <ItemTemplate>
                    <asp:ImageButton ID="ImageButton1" ImageUrl="Icons/profile-user.png" CssClass="btn btn-default" runat="server" /><label><%#Eval("FullName") %></label>
                    <div runat="server" class="form-control">
                        <%#Eval("Commentaire") %>
                    </div>
                    <asp:HiddenField ID="HiddenField1" runat="server" Value=' <%# Eval("CodeCommentaire") %> ' />
                    <asp:ImageButton ID="spambtn" CssClass="btn btn-default" ImageUrl="Icons/warning.png" runat="server" />
                    <input id="rplybtn" Class="btn btn-info" type="button" onclick="ShowTextArea();" value="Reply" />
                    <textarea id="txtcmt2"  cols="50" rows="4" class="form-control" style="visibility:hidden" runat="server"></textarea>
                    <asp:Repeater ID="Repeater2" runat="server">
                        <ItemTemplate>
                            <asp:ImageButton ID="Imagsous" ImageUrl="Icons/profile-user.png" CssClass="btn btn-default" runat="server" /><label><%#Eval("FullName") %></label>
                            <div id="souscmt" ><%#Eval("Commentaire_sous") %></div>
                        </ItemTemplate>
                    </asp:Repeater>
                </ItemTemplate>
            </asp:Repeater>

最佳答案

如果你打算有多个这样的 block ,我会将 javascript 更改为:

function ShowTextArea(clientId)
    {
        var rpt = document.getElementById(clientId);
        var inputs = rpt.getElementsByTagName("input");
        for (var i = 0; i < inputs.length; i++)
        {
            if (inputs[i].click())
            {
                $("#txtcmt2").show();
            }
        }
    }

然后在 <asp:ImageButton />标签,添加 onClick="ShowTextArea('<%= Repeater1.ClientId %>');" 。您可能想要更改 Rpeater1使用您在循环中使用的任何变量,即 currentRepeater如果你正在做类似的事情:

foreach(var currentRepeater in RepeaterCollection)
{
   // repeater block write code...
}

或者您可以引用textarea直接来自onClick事件:

<asp:ImageButton ID="Imagsous" ImageUrl="..." onClick="$('txtcmt2').show();" />

关于javascript - 如何使用 JavaScript 使 Repeater 内的 TextArea 在单击按钮时显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37094427/

相关文章:

c# - 无法在 Xamarin 中加载简单页面

c# - 获取日历的工作时间需要什么权限?

javascript - 使用单键向上函数调用定位多个选项卡

javascript - 在 hda 应用程序中获取远程服务器正常运行时间

javascript - 以编程方式设置 Javascript 实例变量

javascript - 在angularjs中获取从 View 到 Controller 的值

c# - 在 c# 中使用 ssl 的 Google Cloud Sql 连接

javascript - 如何使用 JavaScript 或 jQuery 获取证书列表?

javascript - 复选框启用 onload 以显示其他元素

javascript - 使网页内容适合固定大小的 iframe