【问题标题】:Access hidden checkboxes with javascript and jQuery使用 javascript 和 jQuery 访问隐藏的复选框
【发布时间】:2013-11-27 17:40:41
【问题描述】:

我有一个数据表,其中每一行都有一个复选框。我正在尝试将select-all 功能添加到这组复选框中,为此我创建了以下函数:

function selectAll() {
    $(':checkbox').each(function() {
            this.checked = true;
        });
}

这适用于选择当前可见的所有复选框,但是,不会选择数据表其他页面上的复选框。我知道这些复选框通常存在问题,因为要提交表单并包含这些复选框,我必须添加以下函数:

$('form').submit(function() {
    oTable1 = $('#mytable').dataTable();
    $(oTable1.fnGetHiddenNodes()).find('input:checked').appendTo(this);
});

所以我怀疑为了选中这些复选框,我必须以某种方式将它们附加到 DOM,至少是暂时的,将它们选中,然后将它们从 DOM 中删除。或者有什么更简单的我可以做的吗?

【问题讨论】:

  • 你应该告诉我们这些隐藏的复选框一旦被选中应该做什么?添加一个元素来检查它然后删除它没有多大意义
  • 复选框是表单的一部分。因此,当提交表单时,第二个代码块将它们添加到 DOM,以便它们将与表单的其余部分一起提交。我在这里要问的是如何修改第一个代码块,使其适用于隐藏节点和可见节点。
  • 您确定数据表其他页面中的复选框在 DOM 中吗?数据表小部件可能只是将数据保存在内存中,但仅将当前页面放入 DOM 中。
  • $('.checkbox:hidden').prop('checked', true),这行得通吗?
  • 更简单:$(":checkbox").prop('checked', true)

标签: javascript jquery jquery-datatables


【解决方案1】:

我设法使用以下方法完成了这项工作:

oTable1 = $('#mytable').dataTable();
$(oTable1.fnGetNodes()).find(':checkbox').attr('checked',true);

你也可以使用

$(oTable1.fnGetFilteredNodes()).find(':checkbox').attr('checked',true);

这将仅将“全选”应用于与当前过滤器匹配的行。

【讨论】:

    猜你喜欢
    • 2013-04-26
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多