我道歉再次打扰你们。
当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>
答案 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>