当前位置: 首页 > 知识库问答 >
问题:

将行动态添加到datatable后,复选框不起作用

陈宜修
2023-03-14

Im使用AJAX向datatable添加多行,其中包含一个复选框作为元素。我已经为复选框编写了一个代码,在选择/取消选择'select-all'之后,tbody中的所有子复选框都应该相应地被选中或取消选中。并且在手动选择/取消选择任何子复选框后,“选择-全部”复选框应该会更改。但这部分不起作用。

<table id="user" class="w3-table-all w3-hoverable w3-card-4 display">
                <thead>
                    <tr class="w3-light-grey">
                        <th><input type="checkbox" class="w3-check" id="select-all"></th>
                        <th>User Id</th>
                        <th>Username</th>
                        <th>Full Name</th>
                        <th>Activated Date</th>
                        <th>Last Login Date</th>
                    </tr>
                </thead>
                <tbody id="body">

                </tbody>
</table> 
$("#select-all").change(function(){ 
        $(".checkbox").prop('checked', $(this).prop("checked"));
    });


    $('.checkbox').change(function(){ 
        if(false == $(this).prop("checked")){ 
            $("#select-all").prop('checked', false); 
        }

        if ($('.checkbox:checked').length == $('.checkbox').length ){
            $("#select-all").prop('checked', true);
        }
    });
var table =  $('#user').DataTable({
        "columns": [
            { "orderable": false },
            null,
            null,
             null,
             null,
            null,
          ],
        "order": [[ 1, "asc" ]]
     });

 $.ajax({
url: 'data.json',
dataType: 'json',
success: function(data) {
    for (var i=0; i<data.length; i++) {
        if(data[i].enabled==1)
        var row1 = $('<tr><td><input type="checkbox" class="w3-check checkbox" value=""></td><td>' + data[i].id+ '</td><td>' + data[i].username + '</td><td>' + data[i].first_name + ' ' + data[i].middle_name + ' ' + data[i].last_name + '</td><td>' + data[i].activated_date + '</td><td>' + data[i].last_login + '</td></tr>');
      table.rows.add(row1);
        table.draw();
        $("#body").append(row1);  
    }
},
error: function(jqXHR, textStatus, errorThrown){
    alert('Error: ' + textStatus + ' - ' + errorThrown);
}
});

共有1个答案

尤祖鹤
2023-03-14

请尝试此代码

$("#user").on("click", "#select-all").change(function(){ 
        $(".checkbox").prop('checked', $(this).prop("checked"));
    });

$("#user").on("click", ".checkbox", function() {
    $("#select-all").prop('checked', true)
    $("#user").find(".checkbox").each(function() {
      if (!$(this).prop('checked')){
        $("#select-all").prop('checked', false);
      return;
     }
    })
  })

下面是示例代码

$(function() {

  //handler for selectall change
  $('#selectAll').change(function() {
    $("input[name='msisdn[]']").prop('checked', $(this).prop('checked'))
  })

  //handler for all checkboxes to refect selectAll status
  $("input[name='msisdn[]']").change(function() {
    $("#selectAll").prop('checked', true)
    $("input[name='msisdn[]']").each(function() {
      if (!$(this).prop('checked')){
        $("#selectAll").prop('checked', $(this).prop('checked'));
        return;
      }
    })
  })

})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="multiple_msisdn">
  <label class="exp">
<input type="checkbox" class="exp" id="selectAll"> -- Select All -- </label>
  <label class="exp">
<input type="checkbox" class="exp" name="msisdn[]" value="1">&nbsp;ABC [xxxxxxxx]</label>
  <label class="exp">
 <input type="checkbox" class="exp" name="msisdn[]" value="18">&nbsp;ABC [xxxxxx]</label>
</div>
 类似资料:
  • 我的网站遇到了一些问题。我想添加CSS到我的按钮像这样的东西,我发现在网上。https://codepen.io/allthingssmitty/pen/wjzvjo我无法为它添加ID,因为我无法更改HTML代码,因为它是由WordPress自动生成的。如有任何帮助,我们将不胜感激。

  • 问题内容: 我对编程非常陌生,无法添加到。没有错误,但未显示任何内容。 问题答案: 一个渲染器可以得出一个复选框,但不支持单元格编辑器。而是考虑一个单列。默认的渲染器和编辑器为类型的列是一个,对于实施例。

  • 当前表格每一行由表单生成。且表格是通过jquery 的dataTable生成,第一列为复选框,在表格中追加行时如何同时为每一行添加勾选框啊。这个是我加的,但显然是有问题的 以下是相关代码 这里是添加每一行的代码

  • 我有几个复选框。基于JSON响应(通过ajax-requests加载数据),我使用.prop()函数设置和重置复选框的默认值。问题是,如果我手动改变它们,它们显然不会改变这种行为。我不能通过$('#checkbox:checked').val()传递复选框的值,控制台日志显示为'undefined'。这是因为.prop()函数吗?如何获取选中复选框的值? 如果你需要更多的信息,我很乐意提供。这里有

  • 我有一个来自excel电子表格的数据框,其中我找到了每个域出现的频率。我想添加域频率计数到它的相应域。 下面是查找频率并尝试将其添加到相应域的代码。 当我从数据帧打印出频率时:

  • 我使用以下方法在easytable(easytable)中创建我的表头 然后,绘制表格: 表格标题绘制正确,但。。动态添加行的方法是什么?我必须画一张新桌子吗?我可以向已经创建的表中添加行吗? 谢谢