You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Datatable复选框提交仅获取当前页数据问题求助

Laravel中Datatable跨分页获取所有勾选数据的解决方案

问题根源

Datatable分页时仅当前页的DOM元素会保留在页面中,其他页的元素会被临时移除。直接通过DOM选择器获取勾选框,只能拿到当前页的勾选数据,无法获取其他分页的选择项。

解决思路

手动维护一个全局数组跟踪所有分页中被勾选的ID:

  • 监听复选框的勾选/取消事件,实时更新数组内容
  • 提交表单时,将数组中的所有ID转为隐藏字段加入表单,确保后端能获取全部勾选数据

修改后的代码

var DT = $('#table-data-notice').DataTable({
    ...config,
    stateSave: true // 可选:开启状态保存,切换分页后保留勾选状态
});

// 全局数组存储所有勾选的ID
var selectedIds = [];

// 监听Datatable内复选框的状态变化(事件委托,兼容分页渲染)
DT.on('change', 'input[type="checkbox"]', function() {
    var id = $(this).val();
    if ($(this).is(':checked')) {
        // 避免重复添加ID
        if (!selectedIds.includes(id)) {
            selectedIds.push(id);
        }
    } else {
        // 取消勾选时移除对应ID
        selectedIds = selectedIds.filter(item => item !== id);
    }
});

$('#hantar').on('click', function(){
    if (selectedIds.length === 0) {
        swal('Amaran', 'Sila pilih sekurang-kurangnya satu notis', 'warning');
        return false;
    }

    var $form = $('#verify-form');
    // 清空之前的隐藏字段,防止重复提交
    $form.find('input[name="selected_ids[]"]').remove();
    
    // 将所有勾选ID添加为表单隐藏字段
    selectedIds.forEach(function(id) {
        $form.append(
            $('<input>')
                .attr('type', 'hidden')
                .attr('name', 'selected_ids[]')
                .val(id)
        );
    });

    swal({
        title: "Anda pasti?",
        type: "warning",
        showCancelButton: true,
        confirmButtonText: '{!! __('Ya') !!}',
        cancelButtonText: '{!! __('Tidak') !!}'
    },
    function(confirmed){
        if (confirmed) {
            $('#verify-form').removeAttr('data-success');
            $('#verify-form').submit();
        }
    });
});

后端获取数据

在Laravel控制器中,直接通过请求对象获取所有勾选的ID数组:

$selectedIds = $request->input('selected_ids');
// 后续处理逻辑,比如批量更新、删除等

内容的提问来源于stack exchange,提问作者Adam Fiqrie Putra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 16:13:12