根据Repeater中RadioButtonList的选定值启用/禁用某些文本框控件

时间:2017-07-12 01:53:03

标签: jquery asp.net repeater

我道歉再次打扰你们。

当RadioButtonList控件位于Repeater中但Textbox控件位于外部时,以下脚本有效。

<script type="text/javascript">
        $(document).ready(function() {
            $('#rblStatus input').change(function () {
                if ($(this).val() == "Yes") {
                    $("#txtOnwerName").prop("disabled", true);
                }
                else {
                    $("#txtOnwerName").prop("disabled", false);
                }
            });
        });
    </script>

然而,我现在面临的问题是RadioButtonList控件和文本框(大约5个)都在Repeater控件中。

因此,无论您检查RadioButtonList的Yes还是No值,都不会禁用或启用文本框。

任何想法我做错了什么?

示例:

 <form ID="form1" runat="server">
<asp:Repeater ID="Repeater1" runat="server">
 <ItemTemplate>
   <asp:RadioButtonList ID="rblIssues" runat="server" RepeatDirection="Horizontal" TextAlign="Right">
    <asp:ListItem Text="Yes" />
    <asp:ListItem Text="No" />
   </asp:RadioButtonList><br />
   <asp:TextBox ID="txtOnwerName" runat="server"></asp:TextBox>
 </ItemTemplate>
</asp:Repeater>
</form>

1 个答案:

答案 0 :(得分:0)

你是否检查了生成的html?如果是这样,你会看到控件的ID被重命名。因此,您需要通过ClientID或类名访问它们。

首先将ItemTemplate的每个内容包装在<div>中作为初学者。现在的方式是不可能从另一个中识别出一个Repeater项目。

<div class="repeaterItem">
    <asp:RadioButtonList ID="rblIssues" runat="server" RepeatDirection="Horizontal" TextAlign="Right">
        <asp:ListItem Text="Yes" />
        <asp:ListItem Text="No" />
    </asp:RadioButtonList><br />
    <asp:TextBox ID="txtOnwerName" runat="server"></asp:TextBox>
</div>

现在您可以根据repeaterItem课程找到一个项目。检查值并启用/禁用TextBox。

<script type="text/javascript">
    $('.repeaterItem input[type="radio"]').change(function () {
        if ($(this).val() == "Yes") {
            $(this).closest('div').children('input[type="text"]').prop("disabled", true);
        }
        else {
            $(this).closest('div').children('input[type="text"]').prop("disabled", false);
        }
    });
</script>