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のデータテーブルが9つの列のうちの1つの列で並べ替えられないという同じ問題がありました。それでも、Firefoxでは完全に機能しました。

Chromeで機能させるには、すべての列にsTypeを明示的に指定する必要がありました。

私の場合、「html」は正常に機能しました。

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

Chromeでは列タイプの自動検出がどういうわけか失敗していると思います。

于 2012-05-07T03:35:03.920 に答える