Jquery + Datatables:启用/禁用所有复选框

时间:2018-06-14 16:02:05

标签: jquery datatables

大家好,我有一个挣扎的问题让我疯狂#34;我使用以下代码创建而不是使用' css'复选框的版本,在DataTables js插件中使用,并将所有这些设置为DISABLED:

table = $('#DISCOVEREDSW').DataTable(
{
    paging: true,
    "processing": true,
    "ajax": "catalogo_discoveredSw.php",
    "deferLoading": 57,
    "deferRender": true,
    "scrollY": 350,
    "iDisplayLength": 100,
    "scrollX": true,
    "bRetrieve": true,
    "bDestroy": true,
    "ordering": true,
    "info":     true,
    "sDom":     'ltipr',
    "bDestroy": true,
    'columnDefs': [{
        'targets': 0,
        'searchable':false,
        'orderable':false,
        'className': 'dt-body-center',
        'render': function (data, type, full, meta){
            return '<input class="checkCompSw" disabled="true" type="checkbox" name="id[]" value="' + $('<div/>').text(data).html() + '">';
        }
    }]
}

我想将DISABLED = false设置为所有复选框,所以我尝试:

<script>
    $(document).ready(function() {
        $('#associaDissociaApp').click(function()
        {
            $('#applicationBox').show("slow","linear");
            $('.checkCompSw').prop('disabled', false);
            $('#annulla').click(function() {
                $('#applicationBox').hide("slow","linear");
                $('.checkCompSw').prop('disabled', true);
            });
        });
    });
</script>

真正的问题是只有显示的复选框被禁用=错误:我的意思是,如果我在其他页面之间移动,所有复选框仍然被禁用,并且仅在第一页我看到所有复选框都已启用。当然,我需要一个脚本,当我点击一个按钮再次禁用它们时,会再次禁用它们。

有人可以帮我解决一下吗?

非常感谢提前。 :)

1 个答案:

答案 0 :(得分:0)

DataTables插件从除DOM的当前页面之外的所有页面中删除元素。

使用$() API方法访问DOM中不存在的元素。

使用以下代码禁用所有页面上的复选框。

$('#DISCOVEREDSW').DataTable().$('.checkCompSw').prop('disabled', false);

您可能还需要删除deferLoadingdeferRender来禁用延迟呈现,因为即使是$() API方法,也永远无法访问未显示页面中的元素。