数据表 - 转换字符串到日期类型过滤器错误

时间:2015-04-14 11:54:08

标签: javascript datatable jquery-datatables

我的表中有5列,第二列是作为日期类型的字符串(1月12日14日),所以当它过滤时,它只根据当天而不是年,月,然后日过滤。请记住,我无法更改类型,因为这是大型项目的一部分。

我正在使用datatables.net及其新手,所以任何帮助都会受到赞赏,所以我的问题是有人可以将字符串转换为日期类型和过滤器吗?

<script type="text/javascript" language="javascript" class="init">

var mSortingString = [];
var disableSortingColumn = 4; 
mSortingString.push({ "bSortable": false, "aTargets": [disableSortingColumn] });

    $(document).ready(function () {
    $('#table').dataTable({
                "paging": false,
                "ordering": true,
                "info": false,
                "aaSorting": [],
                "orderMulti": false,
                "aoColumnDefs": mSortingString              
        });
    });

</script>

1 个答案:

答案 0 :(得分:1)

您可以查看Sorting Plugins以查看是否找到了可以使用的documentation。或者,您可以创建自己的排序插件,我已经完成了几次并且很容易。

var months = {Jan:1,Feb:2,Mar:3,Apr:4,May:5,Jun:6,Jul:7,Aug:8,Sep:9,Oct:10,Nov:11,Dec:12};
jQuery.extend(jQuery.fn.dataTableExt.oSort, {
    "my-date-pre": function(a) {
        //12 Jan 14
        var myDate = a.split(' ');
        return (myDate[2] + months[myDate[1]] + myDate[0]) * 1;
    },
    "my-date-asc": function(a, b) {
        return ((a < b) ? -1 : ((a > b) ? 1 : 0));
    },
    "my-date-desc": function(a, b) {
        return ((a < b) ? 1 : ((a > b) ? -1 : 0));
    }
});

因此,您可以在sTypeaoColumns配置中使用columnDefs并将其设置为 my-date ,类似这样

 $('#example').dataTable( {
    columnDefs: [
        { type: 'my-date', targets: 0 }
    ]
 } );

其中targets是列的索引,日期从0开始。