2010-06-11 3 views
1

У меня есть два радиообмена и один checkboxlist на странице. В идеале, на основе выбранного флажка, я хочу включить/отключить соответствующий radibuttonlist с функцией jquery.jquery get radioobuttonlist по имени динамически

Но некоторые как $ ("input [name * =" + columnName + "]") всегда возвращают null. Он не может найти радиобунт-лист по его названию?

$(function() { 
     function checkBoxClicked() { 

      var isChecked = $(this).is(":checked"); 
      var columnName = "rblColumn" + $(this).parent().attr("alt"); 

      if (isChecked) { 
       $("input[name*=" + columnName + "]").removeAttr("disabled"); 
      } else { 
       $("input[name*=" + columnName + "]").attr("disabled", "disabled"); 

       $("input[name*=" + columnName + "] input").each(function() { 
        $(this).attr("checked", "") 
       }); 

      } 

     } 

     //intercept any check box click event inside the #list Div 
     $(":checkbox").click(checkBoxClicked); 
    }); 




<asp:Panel ID="TestPanel" runat="server"> 
<asp:CheckBoxList ID = "chkColumn" runat="server" RepeatDirection="Horizontal"> 
    <asp:ListItem id = "Column1" runat="server" Text="Column 1" Value="1" alt="1" class="HeadColumn" /> 
    <asp:ListItem id = "Column2" runat="server" Text="Column 2" Value="2" alt="2" class="HeadColumn"/> 
</asp:CheckBoxList> 

<table> 
    <tr> 
     <td> 
      <asp:RadioButtonList ID = "rblColumn1" runat="server" RepeatDirection="Vertical" disabled="disabled"> 
       <asp:ListItem id="liColumn1p" runat="server" /> 
       <asp:ListItem id="liColumn1n" runat="server" /> 
      </asp:RadioButtonList> 
     </td> 
     <td> 
      <asp:RadioButtonList ID = "rblColumn2" runat="server" RepeatDirection="Vertical" disabled="disabled"> 
       <asp:ListItem id="liColumn2p" runat="server" /> 
       <asp:ListItem id="liColumn2n" runat="server" /> 
      </asp:RadioButtonList> 
     </td> 
    </tr> 
</table> 
</asp:Panel> 

Источник:

<div id="TestPanel"> 

<table id="chkColumn" border="0"> 
     <tr> 
      <td><span id="Column1" alt="1" class="HeadColumn"><input id="chkColumn_0" type="checkbox" name="chkColumn$0" /><label for="chkColumn_0">Column 1</label></span></td><td><span id="Column2" alt="2" class="HeadColumn"><input id="chkColumn_1" type="checkbox" name="chkColumn$1" /><label for="chkColumn_1">Column 2</label></span></td> 
     </tr> 
    </table> 

<table> 
    <tr> 
     <td> 
      <table id="rblColumn1" class="myRadioButtonList" disabled="disabled" border="0"> 
     <tr> 
      <td><span id="liColumn1p"><input id="rblColumn1_0" type="radio" name="rblColumn1" value="" /></span></td> 
     </tr><tr> 
      <td><span id="liColumn1n"><input id="rblColumn1_1" type="radio" name="rblColumn1" value="" /></span></td> 
     </tr> 
    </table> 
     </td> 
     <td> 
      <table id="rblColumn2" class="myRadioButtonList" disabled="disabled" border="0"> 
     <tr> 
      <td><span id="liColumn2p"><input id="rblColumn2_0" type="radio" name="rblColumn2" value="" /></span></td> 
     </tr><tr> 
      <td><span id="liColumn2n"><input id="rblColumn2_1" type="radio" name="rblColumn2" value="" /></span></td> 
     </tr> 
    </table> 
     </td> 
    </tr> 
</table> 

</div> 
+1

Вы можете разместить разметку? Трудно диагностировать, почему селектор не соответствует, не видя, что это не соответствует :) –

+0

мы можем увидеть некоторые html –

+1

Вам нужно включить ** сгенерированный ** HTML. Игнорируйте весь код на стороне сервера (ASP.NET, JSF/JSP, что угодно), это не имеет значения и невидимо для JavaScript/jQuery. Откройте страницу в веб-браузере, щелкните правой кнопкой мыши и выберите * View Source *. Это настоящий HTML-код, который JS/jQuery может видеть/получать. Копипасте это здесь. – BalusC

ответ

1

Я получил его. Я добавил cssclass в каждый радиокубок и нашел его по id:

$ (". MyRadioButtonList [id * =" + columnName + "]"). RemoveAttr ("disabled");

Это работает сейчас. Спасибо, Патрик. Вы напоминаете мне о неправильном использовании id/name.

+0

Рад, что у вас это работает. В коде есть еще одна ошибка. Я отправлю ответ, чтобы вы могли его полностью отформатировать. – user113716

0

Работал для меня (Jquery):

$('[name*="' + columnName + '"]'); 
Смежные вопросы