jQuery的数据表选择和取消选择复选框

时间:2018-09-27 08:40:27

标签: javascript jquery datatables

我想用shift + click选择网格中的多个复选框。我正在使用jquery datatable的select和deselect方法,但是当取消选择行时,它不适合工作。

例如,如果我选择4行,那么我想取消选择所有行。所以我单击第一行,然后所有行都将被取消选择。但是问题是,如果我想再次选择第一个,那么我需要两次单击该复选框。

当我调试代码时,我发现当您取消选择第一个时,它将选择全部以取消全部而不是第一个。这就是为什么我们需要复选框单击两次。以及此代码中的另一件事如何获取复选框列索引。

这是我的努力代码

var table1 = tableList;
    table1
    .on('select', function (e, dt, type, indexes) {
        if (dt != undefined && type != undefined && indexes != undefined) {
            var rowData = table1.rows(indexes).data().toArray();
            var colIdx = $(this).closest('th').index();
            $.each(rowData, function (index, value) {
                $('input[type=checkbox][name=chkboxtest]').each(function () {
                    var id = value.Id;
                    if ($(this).val() == id) {
                        //console.log($(this).val());
                        if ($(this).is(':checked') == false) {
                                $(this).prop('checked', true);
                        }
                    }
                });
            });
        }
    })
    .on('deselect', function (e, dt, type, indexes) {
        var rowData = table1.rows(indexes).data().toArray();

        if (rowData == undefined || rowData.length == 0) {
            return;
        }

        $.each(rowData, function (index, value) {           
            $('input[type=checkbox][name=chkboxtest]').each(function () {
                var id = value.Id;
                if ($(this).val() == id) {
                    if ($(this).is(':checked')) {
                        console.log($(this).val());
                        $(this).prop('checked', false);
                    }
                    else {
                        $(this).prop('checked', false);
                    }
                }
            });
        });
    });
}

0 个答案:

没有答案