复选框(Icheck)限制不适用于数据表中的其他页面,仅适用于第一页
问题描述:
可选复选框的限制仅适用于表的第一页,第一页上,当我到达限制在可选择的复选框中,当我点击分页中的下一页或其他页码并点击另一个复选框时,它不会限制我,我应该怎么做,它也会应用在其他页面上?复选框(Icheck)限制不适用于数据表中的其他页面,仅适用于第一页
这里是我的代码:
$(document).ready(function() {
var $datatable = $('#datatable-checkbox');
$datatable.dataTable({
'order': [[1, 'asc']]
});
var limit = 2;
$datatable.on('draw.dt', function() {
$('input').iCheck({
checkboxClass: 'icheckbox_flat-green'
});
});
$(".flat").on("ifChecked",function(e) {
var checkboxes = $("input:checkbox");
var $this = $(this);
if (checkboxes.filter(":checked").length > limit) {
swal({
title: "Book Limit Reached",
text: "",
type: "warning",
});
setTimeout(function() {
$this.iCheck('uncheck');
}, 1);
}
});
});
答
您需要通过在on()
呼叫的第二个参数提供选择使用事件委托,见下面的例子:
$datatable.on('ifChecked', '.flat', function() {
// your code here
});
从jQuery的on()
方法文档:
委托事件的优点是可以处理ev从 后代添加到文档中的元素。
请参阅jQuery的“直接和委托事件”on()
方法文档和jQuery DataTables – Why click event handler does not work以获取更多信息。
此外,您还需要使用jQuery DataTable API方法来获取所有复选框的列表,因为除DOM以外的其他页面复选框不会存在。
var checkboxes = $datatable.DataTable().$("input:checkbox");
答
为他人参考,这是我怎么它的基础上@ Gyrocode.com的建议..
顺便说一句,我用I检查的复选框和sweetalert的弹出窗口/警报
$(document).ready(function() {
var $datatable = $('#datatable-checkbox');
$datatable.dataTable({
'order': [[1, 'asc']]
});
var limit = 2;
$datatable.on('draw.dt', function() {
$('input').iCheck({
checkboxClass: 'icheckbox_flat-green'
});
});
$datatable.on('ifChecked', '.flat', function() {
var checkboxes = $datatable.DataTable().$("input:checkbox");
var $this = $(this);
if (checkboxes.filter(":checked").length > limit) {
swal({
title: "",
text: "",
type: "warning",
});
setTimeout(function() {
$this.iCheck('uncheck');
}, 1);
}
});});
感谢您的快速响应,但我认为我不知道根据您的建议构建我的代码。我一直在尝试它,但我认为我没有这样做:(.. ..对不起,但你可以详细说明更多?或者如果它确定,你可以基于我的代码上面构造正确的代码?..这将帮助我很大。 。谢谢 – Neil0412
我现在明白了,如果终于做到了..非常感谢你!!挫折首先进入了我,而不是完全理解它:)希望别人能够从这篇文章中得到帮助。 – Neil0412
当我通过从不同的不同页面选定的复选框值,并非所有的复选框在表单提交过程中发送?应该怎样解决这个问题? – Neil0412