通过选择复选框删除记录在 Jquery 数据表的第一页上工作正常,但在第二页上不行

Posted

技术标签:

【中文标题】通过选择复选框删除记录在 Jquery 数据表的第一页上工作正常,但在第二页上不行【英文标题】:Record deletion by selecting checkbox works fine on first page of Jquery datatables but not in second page 【发布时间】:2020-01-16 04:35:15 【问题描述】:

我是 jquery 数据表的新手,我尝试了 *** 中给出的可能解决方案,但对我没有任何作用 所以请根据我的代码建议我应该做什么(简单的解决方案和解释)。

问题陈述- 我实现了复选框来删除表的多条记录, Jquery Datatable 在第一页上工作正常,当我单击第一页上的选中所有复选框时,它会选中该页面的所有复选框并删除记录,但如果我在第二页并单击选中所有复选框,则它返回到第一页,如果我选择两个不同页面的记录,它也不会删除记录

< script >




  //Delete conformation message
  /***************************/



  //SelectAll checkBox
  /****************************/
  $(document).ready(function() 
    $('#testtable').dataTable();




    $('#checkall').click(function() 
      if (this.checked) 
        $('.delete_checkbox').each(function() 
          this.checked = true;
          $(this).closest('tr').addClass('removeRow');
        );
       else 
        $('.delete_checkbox').each(function() 
          this.checked = false;
          $(this).closest('tr').removeClass('removeRow');
        );
      
    );
    /********************************/


    //Select indivisual checkBox
    /*******************************/
    $('.delete_checkbox').click(function() 

      if ($(this).is(':checked')) 
        $(this).closest('tr').addClass('removeRow');
       else 
        $(this).closest('tr').removeClass('removeRow');
      
    );
    /*******************************/


    //Deletion of Data
    /***********************************/
    $('#delete_all').click(function() 
      var checkbox = $('.delete_checkbox:checked').prop('checked', this.checked);;
      if (checkbox.length > 0) 
        var result = confirm("Are you sure");
        if (result == true) 
          var checkbox_valu = [];
          $(checkbox).each(function() 
            checkbox_valu.push($(this).val());
          );

          $.ajax(
            url: "delete.php",
            method: "POST",
            data: 
              checkbox_id: checkbox_valu
            ,
            success: function() 
              $('.removeRow').fadeOut(1500);
              location.reload(true)

            
          );
         else 
          return false;
        


       else 
        alert("Select atleast one records");
      
    );
    /******************************************/









  );


<
/script>
<style>.removeRow 
  background-color: #FF0000;
  color: #FFFFFF;


</style>
<html>

<head>
  <title>Delete Multiple Records using PHP Ajax with Animated Effect</title>
  <script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
  <script src="https://cdn.datatables.net/1.10.4/js/jquery.dataTables.min.js"></script>
  <link rel="stylesheet" href="https://cdn.datatables.net/1.10.4/css/jquery.dataTables.min.css">




</head>

<body>
  <div class="container">
    <br />
    <div class="table-responsive">
      <h3 align="center">Delete Multiple Records using PHP Ajax with Animated Effect</h3><br />
      <div class="table-responsive">
        <table id="testtable" class="table table-bordered">
          <thead>
            <tr>
              <th >
                <form method="post" action="">
                  <input type="checkbox" id="checkall" autocomplete="off" />
                  <button type="button" id="delete_all" class="btn btn-danger btn-xs">Delete</button>
                </form>

              </th>
              <th >Name</th>
              <th >Address</th>
              <th >Gender</th>
              <th >Designation</th>
              <th >Age</th>
            </tr>
          </thead>
          <?php
                        foreach($result as $row)
                        
                            echo '
                            <tr>
                                <td>
                                    <input type="checkbox" autocomplete="off" class="delete_checkbox" value="'.$row["id"].'" />
                                </td>
                                <td>'.$row["name"].'</td>
                                <td>'.$row["address"].'</td>
                                <td>'.$row["gender"].'</td>
                                <td>'.$row["designation"].'</td>
                                <td>'.$row["age"].'</td>
                            </tr>
                            ';
                        
                        ?>
        </table>
      </div>
    </div>
  </div>
</body>

</html>

.

【问题讨论】:

【参考方案1】:

您的页面正在重新加载,因为您的表格位于表单元素中,并且由于您的操作没有目标,因此页面只会提交给自身。试试

$('#buttonId').click( function(event) 
    event.preventDefault();
);

停止表单提交页面,因为您正在使用 javascript 处理它。

您的删除行功能在多个页面上不起作用,因为其他 [DataTables] 页面上的元素在 DOM 中不存在。当您单击第 2 页或其他任何内容时,DataTables 将重新绘制表格元素以显示新值并隐藏旧值。分页只是这么多结果的一个限制,而 DataTables 足够聪明,可以将其放入分页中。

【讨论】:

以上代码不起作用,我在 javascript 文件中使用 id=checkall 下面的代码 感谢以上回答,有什么方法可以删除 Jquery 数据表中的隐藏复选框,如何删除不可见的先前页面的选中复选框??

以上是关于通过选择复选框删除记录在 Jquery 数据表的第一页上工作正常,但在第二页上不行的主要内容,如果未能解决你的问题,请参考以下文章

标题和行中带有复选框的Jquery数据表:选择所有复选框不起作用

使用jquery表中的复选框从数组中删除JavaScript对象

使用复选框从表中删除记录[重复]

jQuery - 无法从复选框中删除选中的属性

使用 jquery 表中的复选框从数组中删除 JavaScript 对象

JQUERY & 选择框不更新数据库