分组复选框-jQuery / JS / ASP.NET

时间:2018-06-28 10:26:10

标签: javascript jquery asp.net vb.net checkbox

因此,我将复选框与数据组名称分组,如果选中了组成员之一,则使用jQuery自动选择整个组。

这是我的JS代码:

function checkAllList(listNavPath, selectAllId, checkBoxes) {

if (!checkBoxes) {
    checkBoxes = $(listNavPath + ":not(#" + selectAllId + ")")
}; //Exclude first checkbox

function selectAllCheckBoxes() {
    if (checkBoxes.filter(":checked").length == checkBoxes.length) {
        $("#" + selectAllId).prop("checked", true);
    } else {
        $("#" + selectAllId).prop("checked", false);
    }
}
selectAllCheckBoxes();

$(document).on("click", "#" + selectAllId, function () { checkBoxes.prop('checked', $(this).prop("checked")); });
$(document).on("click", checkBoxes, function (e) {
        var isChecked = $(e.target).prop("checked");
        var parent = $(e.target).parent();
        var groupName = $(parent).data("groupname");     
        var chs = $("[data-groupname='" + groupName + "']");

        $(chs).each(function (i) {           
            var chk = $(chs[i]).children().first();

            $(chk).prop('checked', isChecked);           
        })    

这工作得很好,但我想限制.each()使其仅循环通过“组名parent”的父级(如果有意义)。换句话说,我不想在该表之外查找任何组名。在我的示例中,在整个页面上查找该组名,然后如果“ Parent Group Name” ==“ groupName”,则自动选择/取消选择该组,否则返回true;否则,返回true。继续循环。

这是我的ASP标记复选框。这是在创建一列复选框,每行一个。复选框是根据(vb.net)后面的代码动态生成的。

<asp:TemplateField>
  <HeaderTemplate><asp:CheckBox runat="server" Checked="true" /></HeaderTemplate>
  <ItemTemplate><asp:CheckBox runat="server" data-groupname='<%#Eval("InvoiceCreditNumber")%>' Checked="true" ID="chkSelected" /></ItemTemplate>
</asp:TemplateField>

希望对采用什么方法可以使这项工作有任何想法。

谢谢。

2 个答案:

答案 0 :(得分:2)

  

换句话说,我不想在该之外查找任何组名。

如果该表具有ID或类,则可以将“ [data-groupname ='” + groupName +“']的选择限制在表中,如下所示:

$(“ [data-groupname ='” + groupName +“']”,“#id-table”);

$(“#id-table”)。find(“ [data-groupname ='” + groupName +“']”);

答案 1 :(得分:0)

[已解决]

这是我为了使其工作而做的事情:

我得到了这样的桌子:

var tblID = $(e.target).closest('.select-all');

因为.select-all是我要在其中使用复选框的所有表中使用的类。

然后我只在该表中循环如下:

 var chs = $(tblID).find("[data-groupname='" + groupName + "']")
        $(chs).each(function (i) {           
        var chk = $(chs[i]).children().first();         
        $(chk).prop('checked', isChecked);           
    })

感谢大家的回应。你们都被投票了。

快乐的编码。