如何使用tablesorter jquery插件对字符串和日期进行排序?

时间:2014-07-09 14:37:17

标签: php jquery sorting tablesorter

在我的表格(字符串数据)中对某些数据进行排序时,我遇到了一些麻烦。 我从我的数据库中获取日期,并将其格式化为:

    $change['ProposedDate'] = date('d/m/Y',strtotime($r['ProposedDate']));

(请注意,我也尝试过:

    $change['ProposedDate'] = (string)date('d/m/Y',strtotime($r['ProposedDate']));

我用这个转换成"无"

if($change['ProposedDate'] == "30/11/-0001")
{
    $change['ProposedDate'] ="None";
}

表格是这样的(在PHP转换$ c [' ProposedDate']到" XX / YY / ZZZZ"在HTML源代码中)之后:

<table>
 <thead>
  <tr>
   <th> ID </th>
   <th> Proposed Date</th>
   <th> Suggested Date</th>
  </tr>
 </thead>
 <tbody>
  <tr>
   <td>1</td>
   <td>01/10/2014</td>
   <td>None</td>
  </tr>
  <tr>
   <td>2</td>
   <td>14/10/2014</td>
   <td>10/12/2014</td>
  </tr>
  <tr>
   <td>3</td>
   <td>None</td>
   <td>09/09/2014</td>
  </tr>
 </tbody>
</table>

我无法理解的是,我能够排序诸如&#34; 14-0214-98&#34;,&#34; 13-0101-01&#34等字符串;和&#34; 14-0102-40&#34; ,或者&#34;当前&#34;,&#34;等待&#34;,&#34;新&#34;和&#34;已提交&#34;。但是我无法对日期进行排序。我没有&#34;没有&#34;包含日期的两行之间。我尝试了很多解决方案,例如使用空字符串&#34;&#34;替换&#34;无&#34;或使用&#34; a&#34;替换&#34;无&#34;,但没有任何效果。

有没有人有任何想法摆脱这个问题?

注意:将日期转换为字符串对我来说没有任何问题,无论如何我都会将它们转换回来(转换为#34; None&#34; to&#34; 30/11 / -0001&#34;例如)。所以如果你有一个使用字符串的解决方案,我会接受它!

谢谢大家,我真的很沮丧:(

1 个答案:

答案 0 :(得分:0)

我猜第一列可能包含“无”而不是日期,这会导致插件检测到常规文本而不是该列的日期。因此,您需要专门为日期设置解析器。

我不确定你为什么要使用的tablesorter版本,所以你可以这样做:

  1. 原始的tableorter(demo):

    $('table').tablesorter({
    
        dateFormat : "uk",
    
        headers: {
            // set "sorter: false" (no quotes) to disable the column
            0: { sorter: "text" },
            1: { sorter: "shortDate" },
            2: { sorter: "shortDate" }
        }
    
    });
    
  2. 我的fork of tablesorterdemo):

    $('table').tablesorter({
        theme: 'blue',
    
        // other options: "mmddyyyy" & "yyyymmdd"
        dateFormat: "ddmmyyyy",
    
        headers: {
            // set "sorter: false" (no quotes) to disable the column
            0: { sorter: "text" },
            1: { sorter: "shortDate" },
            2: { sorter: "shortDate" }
        }
    
    });