我一直在尝试对DataTables jQuery插件中的复选框字段进行排序,以检查和取消选中。
我在表中创建输入(复选框),如下所示:
'<input type="checkbox" '+ check +' />'check包含文本"checked“或"”。
到目前为止,我只尝试添加DOM复选框类型的排序,如下所示:
{ "sSortDataType": "dom-checkbox" }当我使用插件的API文档的全部代码时,我会得到以下错误:
未定义的TypeError:无法读取我的控制台中未定义的属性'afnSortData‘。
Problem:按下列标题不会按选中或未选中的复选框对列进行排序。
我想得到关于如何修复上述错误的建议,或者只使用jQuery和插件的方法进行排序的另一种方法。
谢谢。
编辑
只是尝试了一个固定的代码-没有错误。但是排序是混乱的:它只是相互替换,而不是排序。例如:如果我选中了1个复选框,而9个没有选中,则复选框将从第三位切换到第六位,然后再切换到第三位,等等。
发布于 2013-04-13 07:54:13
我所做的是在隐藏的P中创建一个bool,所以它将在相同的位置上,因为checkbox.than,我禁用了复选框中的更改值的选项,并且排序现在正在工作。
发布于 2015-05-21 13:12:12
我不得不稍微修改一下Moby's Stunt Double提供的答案。不需要额外的排序插件!只是一些定制的编码。
谢谢所有的想法,各位!由于某些原因,我不得不对我的桌子做特殊处理,这不是一个通用的解决方案。对我来说很好。
我的复选框被禁用,并通过编程进行了检查,因此我无法调用.checked。基于iColumn的调用也抛出了一些东西;可能是因为我有第0列隐藏的内容。
这就是对我有用的东西:
$.fn.dataTableExt.afnSortData['dom-checkbox'] = function ( oSettings, iColumn ) {
var aData = [];
$(oSettings.oApi._fnGetTrNodes(oSettings)).each( function () {
var checker = $(this).find('.classOnSurroundingSpan input');
aData.push( checker.prop("checked")==true ? "1" : "0" );
} );
return aData;
}我的标记看起来如下(周围的跨度是启用跟踪单击禁用复选框的解决方案的一部分):
<span class='classOnSurroundingSpan'><input type='checkbox' disabled='disabled'/></span>我的表定义(部分)是:
"aoColumnDefs": [
{"sSortDataType": "dom-checkbox",
"aTargets":[1],
"asSorting": ["desc"]}
]发布于 2013-04-04 23:47:00
找到这个例子:
$.fn.dataTableExt.afnSortData['dom-checkbox'] = function ( oSettings, iColumn )
{
var aData = [];
$( 'td:eq('+iColumn+') input', oSettings.oApi._fnGetTrNodes(oSettings) ).each( function () {
aData.push( this.checked==true ? "1" : "0" );
} );
return aData;
}初始化如下:
$(document).ready(function() {
$('#example').dataTable( {
"aoColumns": [
null,
null,
null,
null,
null,
{ "sSortDataType": "dom-checkbox" }
]
} );
} );这里:sort.html
https://stackoverflow.com/questions/15823626
复制相似问题