我正在尝试创建一个检查DataTable中所有复选框的函数,包括隐藏的行。 这是“复选框”列的html代码:
<div class="usersTable" id="userTable">
<table cellpadding="0" cellspacing="0" id="customersList" >
<thead>
<tr>
<th><input type="checkbox" name="selectall" id="selectall" class="selectall"/></th>
<th width="200">val1</th>
<th width="80px">val2</th>
<th width="70px">val3</th>
<th width="450">val4</th>
<th width="60px">val5</th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</div>
提交按钮:
<input type='button' value='select all' id='selectallboxes' name='selectallboxes' />
不起作用的JQuery代码:
$(function () {
otable = $('#customersList').dataTable({
"bJQueryUI": true,
"sPaginationType": "full_numbers",
"aLengthMenu" : [ [10,20,50,100,1000], [10,20,50,100,1000] ],
"iDisplayLength": 100,
"bProcessing": true,
"bServerSide": true,
"aaSorting":[],
"iDisplayStart": 0,
"sAjaxSource": "filename",
....
$("#selectallboxes").click ( function () {
alert(dt.fnGetNodes().length + ' is total number')
var selected = new Array();
$('input', dt.fnGetNodes()).each( function() {
$(this).attr('checked','checked');
selected.push($(this).val());
} );
// convert to a string
var mystring = selected.length;
alert(mystring);
})
答案 0 :(得分:9)
尝试:
$("#selectallboxes").click(function () {
var selected = new Array();
$(otable.fnGetNodes()).find(':checkbox').each(function () {
$this = $(this);
$this.attr('checked', 'checked');
selected.push($this.val());
});
// convert to a string
var mystring = selected.join();
alert(mystring);
});
.length
为您提供数组的长度。我已经使用join()
将数组连接成一个字符串。 DataTable的.fnGetNodes()
为您提供表中的所有行,包括隐藏的行。
答案 1 :(得分:0)
好的,所以这应该是您所追求的,这将找到所有当前页面<tr>
并使用dataTables _ API循环它们。您可以根据需要更改过滤器以根据需要选择不同的行,这些都记录在数据表文档中。
$("#selectallboxes").click ( function ()
{
var selected = new Array();
// Use the _ function instead to filter the rows to the visible
var data = oTable._('tr', {"filter":"applied"});
$.each(data, function(key, index)
{
var input = $(this).find('input[type="checkbox"]');
input.attr('checked', 'checked');
selected.push(input.val());
});
// convert to a string
var mystring = selected.length;
alert(mystring);
});
答案 2 :(得分:0)
尝试类似
的内容$("#selectallboxes").click ( function () {
var selected = [];
$('input:checkbox', otable).each( function() {
selected.push($(this).prop('checked', true).val());
} );
// convert to a string
alert(selected.join());
})
答案 3 :(得分:0)
fnGetNodes()将只提供可见的行,由于分页fnGetHiddenNodes()而有一个扩展来获取隐藏的行,但是这将与jquery datatable版本1.9一起使用,jquery数据库中有相同的更新1.10但这不起作用。 您可以将从ajax请求接收的数据存储在一个数组中,然后根据复选框单击事件的条件,使用数据重新绘制表格,并使用所选属性输入(复选框)。