jquery复选框启用/禁用radiobuttonlist

时间:2010-02-24 21:22:57

标签: jquery

我有一个Checkbox并在相同的表行和不同的td中禁用了Radiobuttonlist,只是在我选中/取消选中复选框时尝试启用/禁用它。

<tr class = "main">
    <td colspan="2">
      <input id="CheckOne" type="checkOne" name="checkOne" />
      <label for="CheckOne">Some Text</label>
    </td>
    <td align="center">
        <table id="RadioButtonListOne" disabled="disabled" title="Choices" border="0">
        <tr>
         <td>
                    <span disabled="disabled">
                    <input id="RadioButtonListOne_0" type="radio" name="RadioButtonListOne" value="Y" disabled="disabled" />
                    <label for="RadioButtonListOne_0">Yes</label></span>
               </td>
               <td>
                    <span disabled="disabled"><input id="RadioButtonListOne_1" type="radio" name="RadioButtonListOne" value="N" disabled="disabled" />
                    <label for="RadioButtonListOne_1">No</label>
                    </span>
               </td>       
           </tr>
        </table>
     </td>
  </tr>

这就是原始服务器端html的样子:

   <tr class = "main">
       <td colspan="2">
            <asp:CheckBox ID="CheckBoxOne" runat="server" Text="Some Text"/>
       </td>
       <td align="center">
            <asp:RadioButtonList ID="RadioButtonListOne" RepeatDirection="Horizontal">
                  <asp:ListItem Value="Y">Yes asp:ListItem>
                  <asp:ListItem Value="N">No</asp:ListItem>
             </asp:RadioButtonList>
        </td>
   </tr>

由于某种原因,我正在尝试一些明显的事情,即

    $('#<%= CheckBoxOne.ClientID %>').click(function()
    {
        if ($(this).is(":checked"))
        {
             $('#<%= RadioButtonListOne.ClientID%> input:radio').removeAttr('disabled');

        }
        else 
        {
              $('#<%= RadioButtonListOne.ClientID%> input:radio').attr('disabled', 'disabled');
        }
    });

然后不起作用,但逻辑​​上它应该。我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

为什么你在你的jquery代码中包含&lt;%= RadioButtonListOne.ClientID%input:radio,你也错过了尾随&gt;符号

$('#<%= RadioButtonListOne.ClientID%> input:radio').removeAttr('disabled');

是你的jquery代码在同一页面中,所以它在服务器被客户端下载之前由服务器处理?像&lt;%= RadioButtonListOne.ClientID%&gt;这样的东西不会在php,asp或html.erb等文件之外工作

您可以尝试将if check更改为

if ($(this).attr('checked') == 'checked') 

而不是.is(':checked')

答案 1 :(得分:0)

您的复选框ID是“CheckOne”:

<input id="CheckOne" type="checkOne" name="checkOne" />

但是您的代码看起来像是引用了(最可能的)数值:

$('#<%= CheckOne.ClientID %>').click(function()

您的复选框的ID应与客户的ID匹配:

<input id="<%= CheckOne.ClientID %>" type="checkOne" name="checkOne" />

<input id="CheckOne_<%= CheckOne.ClientID %>" type="checkOne" name="checkOne" />

将jQuery调整为

$('#CheckOne_<%= CheckOne.ClientID %>').click(function()

单选按钮ID也存在类似的问题。