限制已选中,复选框在bootstrap dataTable中

时间:2017-01-27 05:35:52

标签: javascript jquery twitter-bootstrap checkbox datatable

我在下面的代码中点击DataTable中的复选框,然后获取IDs并存储在数组中。例如,我有2个单独DataTables首先是总统,第二个是参议员。

我们知道我们只能在总统中投票1,参议员我们可以选择很多。

我的问题是我可以查看DataTables中有多少个复选框。如何限制选中的复选框?。

  

还在这里学习bootstrap。

JS代码

var dataTablestest = $("#tbltest").DataTable({
    responsive: true,
    processing: true,
    info: true,
    search: true,
    stateSave: true,
    order: [[1, "asc"], [2, "asc"]],
    lengthMenu: [[50, 100, 200, -1], [50, 100, 200, "All"]],
    ajax: { "url": "/Voting/LoadTableTest" },

    columns:
    [
         { data: "testID", title: "", visible: false, searchable: false },
        { data: "Fullname", title: "FullName", sClass: "alignRight" },
        { data: "Position", title: "Position", sClass: "alignRight" },
        { data: "party", title: "Party", sClass: "alignRight" },
        { data: "ActionMenu", title: "Click to vote", searchable: false, orderable: false, sClass: "alignCenter",
            "mRender": function (data) {
                return '<center><label><input class="checkId" type="checkbox" id="chkvote_' + data + '" value=""/></label></center>';
            }
        }
    ]
});
var arrayIds = [];
$('#tbltest tbody').on('click', 'tr', function (e) {
    if ($(e.target).is(".checkId")) {
        var Ids = dataTablestest.row(this).data().testID;
        arrayIds.push(Ids);
        return
    }
});

修改

我找到了答案但是有问题。每次从我的dataTable中选中一个复选框时,我的计数器都会保持递增。

 $('#tbltest tbody').on('click', 'tr', function (e) {
    if ($(e.target).is(".checkId")) {
        if ($(e.target).is(":checked") == true) {
            CheckCount = CheckCount + 1;
            var Ids = dataTablestest.row(this).data().testID;
            if (CheckCount > 1) {
                return false;
            }
            arrayIds.push(Ids);
            return
        }
        else {
            CheckCount = parseInt(CheckCount) - parseInt(1);
        }
    }
});

1 个答案:

答案 0 :(得分:0)

我在下面使用此代码..感谢所有查看我的帖子的人。

 var arrayIds = [];
$('#tbltest tbody').on('click', 'tr', function (e) {
    if ($(e.target).is(".checkId")) {
        var Ids = dataTablestest.row(this).data().testID;
        if ($(e.target).is(":checked") == true) {
            var lenArray = arrayIds.length;
            if (lenArray < 1) {
                arrayIds.push(Ids);
            } else {
                return false;
            }
        }
        else {
            for (var i = arrayIds.length - 1; i >= 0; i--) {
                if (arrayIds[i] === Ids) {
                    arrayIds.splice(i, 1);
                }
            }
        }
    }
    return;
});