我想用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);
}
}
});
});
});
}