DataTables:日期排序不适用于Firefox& IE

时间:2013-11-04 13:49:37

标签: sorting date datatables

我在这2个浏览器中对Date列的排序存在问题,在chrome中它正常工作。

我无法弄清楚目前会发生什么,希望有人可以帮助我。

我使用的格式是(月份名称)Ex> 2013年10月

代码:(包含日期的列是数字2)

   <script type="text/javascript" charset="utf-8">
$(document).ready(function() {
    $('#resultados').dataTable( {
        "sPaginationType": "full_numbers",
aaSorting: [] ,
        "aoColumnDefs": [
          { 'bSortable': false, 'aTargets': [ 1,4 ] },

       ],
        "aLengthMenu": [[25, 50, 75, 100], [25, 50, 75, 100]],
        "iDisplayLength": 100
    } );
} );

</script>

提前致谢。

4 个答案:

答案 0 :(得分:0)

不确定FF,但是在冗余,

的情况下旧的IE可能会失败

请尝试以下代码:

$(document).ready(function () {
    $('#resultados').dataTable({
        "sPaginationType": "full_numbers",
        aaSorting: [],
        "aoColumnDefs": [
            { 'bSortable': false, 'aTargets': [ 1, 4 ] }
        ],
        "aLengthMenu": [[25, 50, 75, 100], [25, 50, 75, 100]],
        "iDisplayLength": 100
    });
});

jslint是否删除了多余的,[ 1,4 ] }之后)

答案 1 :(得分:0)

结果显示IE上的Date.parse()实现并且FF没有正确解释这些字符串,但chrome确实如此!

我创建了一个插件来实现这个功能(注意 - 我已经在github上放了一个pull request以便将它放入未来的主仓库中):

/**
 * This sorting plug-in will sort, in calendar order, data which
 * is in the format "MMMM yyyy". Inspired by forum discussion:
 * http://datatables.net/forums/discussion/1242/sorting-dates-with-only-month-and-year
 *
 *  @name Date (MMMM yyyy)
 *  @anchor Sort dates in the format `MMMM yyyy`
 *  @author Phil Hurwitz
 *
 *  @example
 *    $('#example').dataTable( {
 *       columnDefs: [
 *         { type: 'stringMonthYear', targets: 0 }
 *       ]
 *    } );
 */

jQuery.extend(jQuery.fn.dataTableExt.oSort, {
    "stringMonthYear-pre": function (s) {
        var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];

        var dateComponents = s.split(" ");
        dateComponents[0] = dateComponents[0].replace(",", "");
        dateComponents[1] = jQuery.trim(dateComponents[1]);

        var year = dateComponents[1];

        var month = 0;
        for (var i = 0; i < months.length; i++) {
            if (months[i].toLowerCase() == dateComponents[0].toLowerCase()) {
                month = i;
                break;
            }
        }

        return new Date(year, month, 1);
    },

    "stringMonthYear-asc": function (a, b) {
        return ((a < b) ? -1 : ((a > b) ? 1 : 0));
    },

    "stringMonthYear-desc": function (a, b) {
        return ((a < b) ? 1 : ((a > b) ? -1 : 0));
    }
});

答案 2 :(得分:0)

HTML-ENTITIES

答案 3 :(得分:0)

我也面临着相同的问题,并且已经通过使用以下技巧解决了该问题:

<span style="display: none;">{{ date('Y-m-d', strtotime($date_varilable)) }}</span>

我放置了相同的span标签,该标签已隐藏,但日期为'Y-m-d'格式,并且ChromeFirefox已正确解析了此格式,并且工作正常

说明: 此技巧用于在其中具有复选框的列上提供排序,并且其选中或未选中是基于某个值的。在这种情况下,span值用于数据表库的排序。