jquery Datatables 复选框获取所有选中的行

usr*_*260 2 javascript checkbox jquery datatables

我有一个数据表,我试图在其中获取所有选中的行。该表具有行分组并使用来自gyrocode的复选框插件。我已经尝试了api上列出的代码,但我没有运气。无论选择什么,我都只会返回第一条记录。我用于的代码如下所示:

var tbl;
$(document).ready(function (){
          tbl = $('#example').DataTable({
            columnDefs: [{
                targets: 0,
                data: 2,
                'checkboxes': {
                    'selectRow': true
                }
            },
            { "visible": false, "targets": 1 }],
            select: {
                style: 'multi'
            },
            order: [[1, 'asc']],
            iDisplayLength: 10,
            drawCallback: function () {
                var api = this.api();
                var rows = api.rows({ page: 'current' }).nodes();
                var last = null;

                api.column(1, { page: 'current' }).data().each(function (group, i) {
                    if (last !== group) {
                        $(rows).eq(i).before(
                            '<tr class="group"><td colspan="6">' + group + '</td></tr>'
                        );
                        last = group;
                    }
                });
            }
        });
});

function getSelected(){
    alert(tbl.columns().checkboxes.selected().length);
}
Run Code Online (Sandbox Code Playgroud)

我的jfiddle 中有代码。我不确定它们是否是复选框和行分组之间的交互?请让我知道我哪里出错了。

注意:复选框基于 gyrocode 的插件数据表版本为 1.10.12

Suj*_*jen 6

我快速检查了一下,埃里克·关是正确的。我只发布一个代码片段:

function getSelected() {
   var selectedIds = tbl.columns().checkboxes.selected()[0];
   console.log(selectedIds)

   selectedIds.forEach(function(selectedId) {
       alert(selectedId);
   });
}
Run Code Online (Sandbox Code Playgroud)

请参阅: https: //jsfiddle.net/nwmmbLso/3/

我刚刚注意到您有重复的学生 ID,这也可能会导致您正在使用的库出现意外行为。如果学生 ID 是唯一的,上面提供的代码应该可以工作。

  • 我是上述插件的作者。关于重复 ID 的好答案和要点。然而,如果只访问一列数据,推荐的方法是使用“column(0).checkboxes.selected()”,尽管您的代码也可以工作。 (3认同)

Pra*_*bhu 5

我来不及回答这个问题。但我的回答可以帮助社区中的其他人。

//datatable has to be initialized to a variable
var myTable = $('#calltable').dataTable();

//checkboxes should have a general class to traverse
var rowcollection = myTable.$(".call-checkbox:checked", {"page": "all"});

//Now loop through all the selected checkboxes to perform desired actions
rowcollection.each(function(index,elem){
    //You have access to the current iterating row
    var checkbox_value = $(elem).val();
    //Do something with 'checkbox_value'
});
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助。

  • 谢谢这真的帮助了我,我正在努力寻找适合我的代码的答案,这个对你有很大帮助 (2认同)