DataTables / Checkboxes Plugin - 如何返回选中的复选框数量

Posted

技术标签:

【中文标题】DataTables / Checkboxes Plugin - 如何返回选中的复选框数量【英文标题】:DataTables / Checkboxes Plugin - How to return the amount of checkboxes checked 【发布时间】:2020-01-21 17:21:16 【问题描述】:

我有一个带有复选框的标准 DataTable,但我不知道如何计算在更改时检查整个数据集的复选框数量。

库:https://datatables.net/

插件:https://www.gyrocode.com/projects/jquery-datatables-checkboxes/

HTML:

<table id="myTable" >
    <thead>
        <tr>
            <th></th>
            <th>ID</th>
            <th>Name</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td></td>
            <td>01</td>
            <td>Alpha</td>
        </tr>
        <tr>
            <td></td>
            <td>02</td>
            <td>Bravo</td>
        </tr>
        <tr>
            <td></td>
            <td>03</td>
            <td>Charlie</td>
        </tr>
        <tr>
            <td></td>
            <td>04</td>
            <td>Delta</td>
        </tr>
        <tr>
            <td></td>
            <td>05</td>
            <td>Echo</td>
        </tr>
    </tbody>
</table>

JS:

resultsTable = $("#myTable").DataTable(
    "columnDefs": [
        
            "targets" : 0,
            "checkboxes": true,
            "orderable": false
        
    ],
    "select": 
        "style": "multi"
    ,
    "order": [[3, 'asc']]
);

表格渲染得很好,在 tbody 和 thead 中有复选框。我可以在 DataTable init 之外编写简单的 onChange 函数,但它只检测在表的可见页面上选中或未选中的复选框。

resultsTable.on('change', 'input[type="checkbox"]', function(e)
    var numChecked = $("#results-table").find("input[type='checkbox']:checked").length;
    console.log(numChecked);
);

我如何或在哪里可以编写一个函数,当复选框被更改时触发,然后返回表中被选中的复选框的总数?

【问题讨论】:

【参考方案1】:

我想几乎在任何地方。只要您在复选框选择器上注册事件(单击、更改等)

JS:

var selectedBoxes = []

$('body').on('click', "#results-table input[type='checkbox']", function(e) 
  if(e.target.checked)
    // add `e.target.value` to selectedBoxes
  
  return selectedBoxes.length;
)

由于数据表页面更改不会刷新页面 - selectedBoxes 数组应在您切换数据表页面时存储其状态。 像上面这样的东西能满足你的需求吗?如果我的 JS 技能有点生疏,并且从样式的角度来看代码没有达到标准,请道歉:)

【讨论】:

DataTables/Checkboxes API 中必须有一些回调,允许检查是否选中了任何/所有复选框。我只是在确定它时遇到了问题。 DataTables/Checkboxes API 中的回调是否允许检查是否已找到任何/所有复选框?

以上是关于DataTables / Checkboxes Plugin - 如何返回选中的复选框数量的主要内容,如果未能解决你的问题,请参考以下文章

数据表中的复选框 stateSave 在缓存刷新后消失(所有其他 stateSave 工作)

使用 DataTables,我从 API 中获取 HTML 字符串,但表格单元格显示的是“<p>Hello</p>”,而不仅仅是 p 标签中的“Hello”。做啥?

Toggle Checkboxes on/off

关于datatables和bootstrap插件使用问题

C#中DataTables的内连接

C# winform项目中ListView控件使用CheckBoxes属性实现单选功能