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

如何在不同的页面上实现只检查jquery DataTable中当前页面数据的“全部检查”功能?

耿俊彦
2023-03-14

我有一个表,其中有大量的记录在数据表的帮助下分页。第一个标题列是一个全选复选框,每一行都有自己的复选框。

1)用户可以在表格中进行导航,并随机选择/取消选择复选框。

2)点击thead中的“全选”复选框,只能勾选/取消勾选当前可见的所有记录。

3)“全选”按钮应为数据表的不同页面保持一种状态(选中/未选中)。例如:如果用户单击第1页的“全选”并导航到下一页,则应取消选中“全选”复选框,再次单击该复选框将选中该页面中的所有行,而之前选中的复选框不受影响。

到目前为止,我有以下代码来处理检查选择:

$('#selectAllCheck').click(function(e) {

    var chk = $(this).prop('checked');
    var currentRows = $('#myTable tbody tr');

    $.each(currentRows, function(){
        $(this).find(':checkbox[name=statusCheckbox]').each(function(){
            $(this).prop('checked', chk);
        });
    });
  });

我知道_('tr',{“filter”:“appliced”});函数,但它只是将所有行返回给我。我不知道为什么。

我已经用上面的代码实现了(1)和(2)并且它工作得很好。唯一的问题是“全选”功能在不同页面上的行为。我查阅了DataTableshtml" target="_blank">.net,但找不到任何与此相关的内容。

共有1个答案

翟弘
2023-03-14

这是我最终为我的需求实现的。虽然不是很完美,但这段代码很好地实现了DataTable中的“全部选择”列。

$(document).ready(function() {
oTable = $('#mytable').dataTable({
    "bJQueryUI" : true,
    "sPaginationType" : "full_numbers",
    "fnDrawCallback": function( settings ) {
            //managing the "Select all" checkbox
            // everytime the table is drawn, it checks if all the 
            //checkboxes are checked and if they are, then the select all
            // checkbox in the table header is selected
            var allChecked = true;
            $('#mytable tbody tr').each(function() {
                $(this).find(':checkbox[name=statusCheckbox]').each(function(){
                    if (!$(this).is(':checked')) {
                        allChecked = false;
                        }
                    });
                });
            $('#selectAllCheck').prop('checked', allChecked);
        },
        });

// This is to stop datatable to sort the column on checking the checkbox
$('thead').click(function(e){
    if (e.target.type == 'checkbox') {
        e.stopPropogation();
    }
});

// Click handler for select all checkbox that checks the rows on current view only
$('#selectAllCheck').click(function(e) {
    var chk = $(this).prop('checked');
    var currentRows = $('#mytable tbody tr');
    $.each(currentRows, function(){
        $(this).find(':checkbox[name=statusCheckbox]').each(function(){
            $(this).prop('checked', chk);
        });
    });
  });

});

 类似资料:
  • 有很多关于如何在浏览器中阻止滑动的问题和解决方案。 示例:通过UI反馈动态控制ViewPager可以滚动的方向 然而,我只想阻止特定页面上的向前滑动(我有一个表格和注册按钮,采取下一页编程) 示例:第1页- 尝试扩展类ViewPager与方法onInterceptTouchEvent和onInterceptTouchEvent但这样做时,我不能让按钮工作,因为一切都被读取为MotionEvent.

  • 尝试获得一个简单的isset表单提交,以检查是否在同一页面内点击了post请求,但我无法使其工作? 我希望这句话能在书页上呼应“OK”?我还从实际工作中删减了很多不必要的代码,因为我只是在这里测试原理。但我想我不明白它是如何工作的,因为它是将表单内容发送到URL的,只是我不知道在单击submit按钮后如何运行单独的php代码。

  • 问题内容: 想象一下,您单击页面上使用的元素,并想从结果页面中检索结果。如何检查以确保生成的页面已加载?我可以在处理页面和单击元素之间插入,但这似乎是一种非常丑陋且缓慢的方法。 问题答案: 设置然后在页面上搜索元素。从 setImplicitWaitTimeout(毫秒= 10000) 设置驱动程序在搜索元素时应等待的时间。当搜索单个元素时,驱动程序将轮询页面,直到找到一个元素或超时到期为止,以先

  • 问题内容: 我正在为网络相册应用程序创建一套Selenium测试。我想测试图像是否实际显示(它包含有效的图像数据)。这样的事情可能吗? 问题答案: 在图像的src符合预期但图像未显示在页面上之前,我遇到过类似的情况。 您可以使用JavaScriptExcecutor检查图像是否显示。 使用以下代码-传递WebElement(图像)- 通过执行此操作,可以验证图像是否已实际加载到网页上。

  • 问题内容: 我正在使用WKWebview开发简单的Web浏览器。我可以检测到SPA时url是否更改,例如trello带有自定义Javascript。 这种方式在放大器页面不起作用。(Google的“加速移动网页”)我尝试使用所有功能,但无法检测到的变化。 但是具有amp页面网址,我想将amp页面网址保存到本地存储。 问题答案: 同样的问题。不幸的是,WKWebView仅在整个页面加载发生时才触发其

  • 使用VUEX如何实现更新浏览器不同关卡的内容? 如下面DEMO,如何实现在page1更新count后,page2不用刷新自动更新? store/index.js page1 page2