取消选择数据表行后,如何正确删除数组中的索引或值?

时间:2018-10-29 19:31:53

标签: javascript jquery

我正在研究示例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 =“ []”

1 个答案:

答案 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);