如何在具有文件jquery.dataTables.js的jquery插件中的相同列中对日期和字符串进行排序?

时间:2015-08-17 10:11:09

标签: javascript php jquery mysql sorting

我有一个表格,其中包含“日期(格式为M / d,如'Aug-23')”和相同列中的字​​符串(如'process'和'completed')。但问题是按字母顺序排序,不按日期排序。 我的文件结构是:

<script type="text/javascript" language="javascript" src="../../table-sorting/js/jquery.js"></script>
<script type="text/javascript" language="javascript" src="../../table-sorting/js/jquery.dataTables.js"></script>      
<script type="text/javascript" language="javascript" class="init">
    $(document).ready(function() {
        $('#sorting').dataTable( {
            "dom": '<"top"iflp<"clear">>rt<"bottom"iflp<"clear">>'
        } );
    } );
</script>
  

CPA送货

     

123 Aug-28

     

327 July-30

     

789流程

如果我对运输列进行排序,那么它会给出结果

  

过程

     

8 - 28

     

七月-30

但我希望结果如下:

  

过程

     

七月-30

     

8 - 28

首先表示字符串排序,并在该日期之后排序

这些运输价值来自Mysql数据库

我如何解决这个问题? 任何建议??

1 个答案:

答案 0 :(得分:0)

您必须以YYYYmmdd格式编写日期,以便字母顺序符合时间顺序 但是你希望你的日期以更好看的格式显示(合法)。

解决方案是有两列:一列具有美观的日期,一列具有YYYYmmdd日期。这个将被隐藏,但将由dataTable排序功能使用。

<table id="sorting">
    <thead>
        <tr>
            <th>CPA</th>
            <th>Shipping</th>
            <th>Shipping (sorting format)</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>123</td>
            <td>Aug 28</td>
            <td>20150828</td>
        </tr>
        <tr>
            <td>327</td>
            <td>July 30</td>
            <td>20150730</td>
        </tr>
        <tr>
            <td>789</td>
            <td>Process</td>
            <td>0</td>
        </tr>
    </tbody>
</table>

然后,Javascript:

$('#sorting').dataTable( {
    "aoColumns": [
        {"bSortable": true}, // First column: normal
        {"iDataSort": 2}, // Second column's sorting depends on third column (dataTable starts counting from 0, that's why third column is number 2)
        {"bVisible": false}, // Third column: hide it
    ]
});

您可以在DataTables' documentation中找到更多提示和示例。