如何通过jQuery单选按钮选择启用/禁用指定TextBox控件?
解决ASP.NET单选按钮控制文本框启用/禁用的问题
看起来你已经搭好了基础框架,但可能因为ASP.NET Web Forms的控件ID渲染机制,导致你的jQuery代码没能正确定位到目标元素。我来帮你修正这个问题,确保交互功能正常跑起来。
问题分析
你的需求很明确:当RadioButtonList选中「INATIVOS(值为I)」时启用txtInatividade文本框,选中「1º PEDIDO(值为C)」时禁用它。原代码的核心问题在于没有正确处理ASP.NET控件的客户端ID——带runat="server"的控件,ASP.NET会自动生成唯一的ClientID(比如可能变成ctl00_ContentPlaceHolder1_rdbDados),直接用静态ID#rdbDados或#inatividade会找不到元素。另外,页面加载时默认选中的是「1º PEDIDO」,文本框初始状态也应该是禁用的,这一步在原代码里缺失了。
修正方案一:使用ClientID绑定选择器
这是最稳妥的方式,不管控件层级如何变化,都能准确找到元素:
$(document).ready(function() { // 页面加载时先初始化文本框的禁用状态 var selectedValue = $("#<%=rdbDados.ClientID%> input:radio:checked").val(); $("#<%=txtInatividade.ClientID%>").prop("disabled", selectedValue !== "I"); // 绑定单选按钮组的change事件 $("#<%=rdbDados.ClientID%>").on("change", function() { var selectedVal = $(this).find("input:radio:checked").val(); // 根据选中值切换文本框状态 $("#<%=txtInatividade.ClientID%>").prop("disabled", selectedVal !== "I"); }); });
修正方案二:设置ClientIDMode为Static(ASP.NET 4.0+)
如果你用的是ASP.NET 4.0及以上版本,可以给控件设置ClientIDMode="Static",让客户端ID和服务器端ID完全一致,代码会更简洁:
首先修改ASP.NET控件:
<!-- 修改RadioButtonList --> <asp:RadioButtonList ID="rdbDados" name="rdbDados" CssClass="radioItens2" runat="server" RepeatDirection="Horizontal" Style="width: 319px;" ClientIDMode="Static"> <asp:ListItem Text="1º PEDIDO" Value="C" Selected="True"></asp:ListItem> <asp:ListItem Text="INATIVOS" Value="I"></asp:ListItem> </asp:RadioButtonList> <!-- 修改TextBox --> <asp:TextBox runat="server" Width="50px" ID="txtInatividade" name="inatividade" ClientIDMode="Static"></asp:TextBox>
然后对应的jQuery代码简化为:
$(document).ready(function() { // 初始化状态 $("#inatividade").prop("disabled", $("#rdbDados input:radio:checked").val() !== "I"); $("#rdbDados").change(function () { var selectedVal = $(this).find("input:radio:checked").val(); $("#inatividade").prop("disabled", selectedVal !== "I"); }); });
关键说明
- 一定要把代码放在
$(document).ready()里,确保DOM加载完成后再执行脚本,避免找不到控件。 - 用
prop("disabled", ...)来设置禁用状态,这是jQuery推荐的方式,比attr()更可靠。 - 初始化状态的步骤很重要,否则页面刚加载时文本框会处于可用状态,不符合需求。
内容的提问来源于stack exchange,提问作者Igor Carreiro
相关产品推荐
相关产品推荐

