我正在研究示例jQuery DataTable,方法是依次选择一行,然后将ID附加到隐藏字段中。一旦以某种方式取消选择该行,所选索引或值也必须在隐藏字段的值中删除。但是它重复或重复编号。如何使用JavaScript正确实现删除数组中的项目。
数据:
第1行:ID:50 第2行:ID:55 第3行:ID:60
JS:
var dataTable = null;
var assignedTo = [];
dataTable = $("#table").DataTable({ ... });
dataTable.off("select").on("select",
function(e, dt, type, indexes) {
dataTable.rows('.selected').every(function(rowIndex) {
assignedTo.push(dataTable.row(rowIndex).data().Id);
$("#AssignedTo").val(JSON.stringify(assignedTo));
});
});
dataTable.off("deselect").on("deselect",
function(e, dt, type, indexes) {
dataTable.rows({ selected: false }).every(function(rowIndex) {
assignedTo.splice(rowIndex, 1);
$("#AssignedTo").val(JSON.stringify(assignedTo));
});
});
输出:如果我选择第1行和第2行
value =“ [50,55]”
输出:如果我取消选择第2行,那么
value =“ [50]”
输出:如果我取消选择所有行,则
value =“ []”
答案 0 :(得分:0)
var dataTable = $("#table").DataTable({ ...
});
function rebuildAssignedToValue(e, dt, type, indexes) {
//make a new result array each time
var assignedTo = [];
//push all the selected value to the array
dataTable.rows('.selected').every(function(rowIndex) {
assignedTo.push(dataTable.row(rowIndex).data().Id);
});
//update the value once
$("#AssignedTo").val(JSON.stringify(assignedTo));
}
//reuse the common method for both events
dataTable.off("select").on("select", rebuildAssignedToValue);
dataTable.off("deselect").on("deselect", rebuildAssignedToValue);