jQuery、DataTables、KeyTables:使用空格键选中复选框

jQuery、DataTables、KeyTables:使用空格键选中复选框,jquery,dom,datatables,datatables-1.10,Jquery,Dom,Datatables,Datatables 1.10,我在脚本中定义了一个数据表 var table = $('#dataTable').DataTable({ "lengthMenu": [ [15, 30, 45, 60, -1], [15, 30, 45, 60, "All"] ], "orderMulti": true, "stateSave": true, "pagingType": "full_numbers", "autoWidth": false, "pageLength": 15, "dom": '<C<f>&l

我在脚本中定义了一个数据表

var table = $('#dataTable').DataTable({
"lengthMenu": [ [15, 30, 45, 60, -1], [15, 30, 45, 60, "All"] ],
"orderMulti": true,
"stateSave": true,
"pagingType": "full_numbers",
"autoWidth": false,
"pageLength": 15,
"dom": '<C<f><i><l><B<"clear">><p>rt>',
buttons: [
    {
        extend:    'copyHtml5',
        text:      '<i class="fa fa-copy"></i>',
        titleAttr: 'Copy'
    },
    {
        extend:    'excelHtml5',
        text:      '<i class="fa fa-file-excel"></i>',
        titleAttr: 'Excel'
    },
    {
        extend:    'csvHtml5',
        text:      '<i class="fa fa-file-alt"></i>',
        titleAttr: 'CSV'
    },
    {
        extend:    'pdfHtml5',
        text:      '<i class="fa fa-file-pdf"></i>',
        titleAttr: 'PDF'
    }
],
'keys': true
});
现在我甚至还没有空格键位,我无法跨越实际识别元素是否是复选框的障碍。

使用
$(node)。find('input')
来查找
输入
元素,因为
节点
是DOM元素,
find()
是jQuery方法

请参见演示

有关更多详细信息,请参见。

使用
$(节点)。查找('input')
可查找
输入
元素,因为
节点
是DOM元素,
查找()
是jQuery方法

请参见演示

有关更多详细信息,请参阅。

这将实现以下功能:

这将实现以下目的:


看,那一页似乎和我有相同的信息。他可以得到数据。单元格、行都是DataTableAPI对象。我试过了,我得到了完全相同的行为,我不能
.find('input')
表.row(cell.index().row)上请参见。该页面似乎与我的信息相同。他可以得到数据。单元格、行都是DataTableAPI对象。我试过了,我得到了完全相同的行为,我不能
.find('input')
表.row(cell.index().row)上{page:'current'}
。结果是:
$('#checkAll')。单击(function(){$(':checkbox',table.rows({page:'current'}).nodes()).prop('checked',this.checked);}){page:'current'}
。结果是:
$('#checkAll')。单击(function(){$(':checkbox',table.rows({page:'current'}).nodes()).prop('checked',this.checked);})非常感谢,我将你的两个答案组合在一起。非常感谢,我将你的两个答案组合在一起。
<tr>
    <td><input class="checkboxRun" data-run_id="1" type="checkbox"></td>
    <td><a href="url here">2018-03-27T15:59:50.163000</a></td>
    <td><a href="url here">Name</a></td>
    <td><a >0:00:01.076000</a></td>
    <td><a >None</a></td>
    <td><a >No scores yet.</a></td>
</tr>
table.on( 'key-focus', function () {

    // The cell, returns an API object, but I don't know how to get the DOM
    // element from this API object
    var cell = table.cell( { focused: true });

    // The node, returns the actual TD, seemingly as an object.
    // I can't seem to be able to do node.find('input'); though, it says
    // node.find is not a function, so I suspect it's not an actual DOM
    // element?
    var node = table.cell( { focused: true } ).node();

    // The data, returns raw HTML as a string
    var data = table.cell( { focused: true } ).data();

    // This doesn't work. Gives an error (node.find is not a function)
    console.log(node.find('input'));
});
$(document).ready(function() {
    var table = $('#example').DataTable({
        keys: {
            keys: [32, "\t".charCodeAt(0)]
        }
    });

    table.on('key', function(e, datatable, key, cell, originalEvent) {
        if (key === 32) {
            if ($(cell.node()).find('input').hasClass('checkboxRun')) {
                var checkBox = $(cell.node()).find('input');
                checkBox.prop("checked", !checkBox.prop("checked"));
            }
        }
    });
});