1

这是我的代码

jQuery.fn.dataTableExt.oSort['num-asc']  = function(a,b) {
    var x = a.replace( /<.*?>/g, "" );
    var y = b.replace( /<.*?>/g, "" );
    x = parseFloat( x );
    y = parseFloat( y );
    return ((x < y) ? -1 : ((x > y) ?  1 : 0));
};

jQuery.fn.dataTableExt.oSort['num-desc'] = function(a,b) {
    var x = a.replace( /<.*?>/g, "" );
    var y = b.replace( /<.*?>/g, "" );
    x = parseFloat( x );
    y = parseFloat( y );
    return ((x < y) ?  1 : ((x > y) ? -1 : 0));
};

$(document).ready(function() {
    $('#ledger').dataTable({
        bAutoWidth: false,
        bJQueryUI : true,
        bProcessing: true,
        bServerSide: false,
        sPaginationType: "full_numbers",
        bStateSave : false,
        bUseRendered: false,
        iDisplayLength: ${entriesValue},
        sDom: mw.superadmin.datatable.relatedListDom,
        aLengthMenu: mw.superadmin.datatable.relatedListLengthMenu,
        aaSorting: [[0,'asc']],
        aoColumns: [
            null,
            { "iDataSort": 2},
            { "bVisible": false, "sType": "num"},
            { "iDataSort": 4, "bSortable": true },
            { "bVisible": false, "sType": "num"}
        ]
    });

据我所知,该表在 IE、FF、Opera 和 Safari 上 100% 正常工作,但在 Chrome 上它失败了,但仅在我的可排序集的 1 个特定列上失败。我想不通,需要一点帮助。

可以在下图中找到它在 Chrome 上所做的一个示例。 在此处输入图像描述

就我个人而言,我觉得它的原因是它有 ( , [ } ) 等字符。但是就像我说的其他浏览器不是问题一样,Chrome 是唯一给我一个问题的浏览器。

4

1 回答 1

6

我遇到了同样的问题,Chrome 中的数据表无法对九列中的一列进行排序。然而,它在 Firefox 中运行良好。

为了让它在 Chrome 中工作,我必须为所有列显式指定sType 。

在我的情况下,“html”工作得很好。

$('#xxx').dataTable({
    "bJQueryUI": true,
    "bSort": true,
    "aoColumns": [
        {"sType": "html"},
        {"sType": "html"},
        {"sType": "html"}
     ]
}); 

我猜想列类型的自动检测在 Chrome 中以某种方式失败。

于 2012-05-07T03:35:03.920 回答