选中一个复选框可检查数组中的所有复选框

时间:2012-04-10 11:04:13

标签: javascript jquery asp.net

如果选中了一个复选框,我想检查所有其他复选框。我的复选框是一个数组。如果选中一个复选框,我希望检查该行中的所有复选框。我的代码

<tr>
  <td class="small">
    <asp:CheckBox ID="chkReportModuleName" runat="server" name="report"></asp:CheckBox>
  </td>
  <td class="particulrs"></td>
  <td class="small">
    <asp:CheckBox ID="chkReportAdd" runat="server" name="reports"></asp:CheckBox>
  </td>
  <td class="small">
    <asp:CheckBox ID="chkReportEdit" runat="server" name="reports"></asp:CheckBox>
  </td>
  <td class="small">
    <asp:CheckBox ID="chkReportDelete" runat="server" name="reports"></asp:CheckBox>
  </td>
  <td class="small">
    <asp:CheckBox ID="chkReportView" runat="server" name="reports"></asp:CheckBox>
  </td>
  <td class="small">
    <asp:CheckBox ID="chkReportPrint" runat="server" name="reports"></asp:CheckBox>
  </td>
  <td class="othr">
    <span><input type="checkbox" id="chkReportActivity1" name="reports" /></span>
  </td>
</tr>

选中名为report的复选框。我想检查所有带有名称报告的复选框。 chkReportModuleName复选框是一个数组。单击它时,我只想检查该行中的复选框。

我尝试过的jquery如下:

 $('input[name="ctl00$MainContent$chkTransModuleName"]').click(function () {
   $('input[name="trans"][i]').attr("checked", this.checked);
   $('input[id="MainContent_chkTransAdd"]').attr("checked", this.checked);
   $('input[id="MainContent_chkTransEdit"][i]').attr("checked", this.checked);
   $('input[id="MainContent_chkTransDelete"][i]').attr("checked", this.checked);
   $('input[id="MainContent_chkTransView"][i]').attr("checked", this.checked);
   $('input[id="MainContent_chkTransPrint"][i]').attr("checked", this.checked);
 });

它运行但我想要检查那些在该行中的复选框。

有人可以帮我这个吗? 感谢

2 个答案:

答案 0 :(得分:1)

假设名称ctl00$MainContent$chkTransModuleName正确

$('input[name="ctl00$MainContent$chkTransModuleName"]').click(function () {
    var chk = !!this.checked;
    $(this).closest('tr').find('.small > input[type="checkbox"]').attr('checked', chk);    
});

答案 1 :(得分:0)

首先,选中CssClass复选框,以便更容易识别:

<tr>
    <td class="small"><asp:CheckBox ID="chkReportModuleName" CssClass="reportModule" runat="server" name="report"></asp:CheckBox></td>
    <td class="particulrs"></td>
    <td class="small"><asp:CheckBox ID="chkReportAdd" CssClass="checkbox" runat="server" name="reports"></asp:CheckBox></td>
    <td class="small"><asp:CheckBox ID="chkReportEdit" CssClass="checkbox" runat="server" name="reports"></asp:CheckBox></td>
    <td class="small"><asp:CheckBox ID="chkReportDelete" CssClass="checkbox" runat="server" name="reports"></asp:CheckBox></td>
    <td class="small"><asp:CheckBox ID="chkReportView" CssClass="checkbox" runat="server" name="reports"></asp:CheckBox></td>
    <td class="small"><asp:CheckBox ID="chkReportPrint" CssClass="checkbox" runat="server" name="reports"></asp:CheckBox></td>
    <td class="othr">
        <span><input type="checkbox" id="chkReportActivity1" name="reports" /></span>
    </td>
</tr>

然后你可以使用这个jQuerycode:

$('.reportModule').click(function () {
    var $el = $(this), $parentTR = $el.closest("tr"), checked = $el.is(":checked");
    $(".checkbox", $parentTR).attr("checked", checked);
});

此代码使用最接近的tr元素作为查找相关复选框以进行切换的上下文。