Javascript jQuery插件表排序器对日期排序不正确

Javascript jQuery插件表排序器对日期排序不正确,javascript,jquery,html,jquery-plugins,tablesorter,Javascript,Jquery,Html,Jquery Plugins,Tablesorter,我正在尝试使用jQuery插件Tablesorter对日期字段进行排序。现在奇怪的是排序似乎部分起作用,它确实重新排列了结果显示的顺序,这表明至少脚本是初始化的 现在我不明白为什么会出现这种情况,我的HTML如下所示: <link href="/themes/blue/Style.css" rel="stylesheet" type="text/css" /> <script src="/Scripts/jquery-ui-1.8.20.js" type="text/java

我正在尝试使用jQuery插件Tablesorter对日期字段进行排序。现在奇怪的是排序似乎部分起作用,它确实重新排列了结果显示的顺序,这表明至少脚本是初始化的

现在我不明白为什么会出现这种情况,我的HTML如下所示:

<link href="/themes/blue/Style.css" rel="stylesheet" type="text/css" />
<script src="/Scripts/jquery-ui-1.8.20.js" type="text/javascript"></script>
<script src="/Scripts/jquery.tablesorter.js" type="text/javascript"></script>
<script>
$(document).ready(function ()
{ 
    $("#repairtable").tablesorter(
{ 
    sortList: [[1, 0]], 
    dateFormat : "ddmmyyyy",
    headers: { 1:{ sorter: "shortDate", dateFormat: "ddmmyyyy"} }
});
} 
);
</script>
<table id="repairtable" class="tablesorter">
<thead>
<tr>
<th>ID</th>
    <th>Date In</th>
    <th>Customer</th>
</tr>
</thead>
<tbody>
<tr>
   <td>48</td>
   <td>11/03/2013</td>
   <td>Rainhem Launderette</td>
</tr>
<tr>
   <td>13</td>
   <td>10/01/2013</td>
   <td>IESA (Gunstones)</td>
</tr>
<tr>
   <td>14</td>
   <td>10/01/2013</td>
   <td>GVF</td>
</tr>
<tr>
   <td>41</td>
   <td>08/03/2013</td>
   <td>Triumph</td>
</tr>
<tr>
   <td>42</td>
   <td>08/03/2013</td>
   <td>Triumph</td>
</tr>
<tr>
   <td>43</td>
   <td>08/03/2013</td>
   <td>Triumph</td>
</tr>   
<tr>
   <td>40</td>
   <td>07/03/2013</td>
   <td>RAG Collections Ltd</td>
</tr>
<tr>
   <td>38</td>
   <td>06/03/2013</td>
   <td>WM Sinclair</td>
</tr>
<tr>
   <td>39</td>
   <td>06/03/2013</td>
   <td>WM Sinclair</td>
</tr>
<tr>
   <td>22</td>
   <td>05/03/2013</td>
   <td>IESA Weetabix B'Lat</td>
</tr>
</tbody>
</table>

$(文档).ready(函数()
{ 
$(“#可修复”).tablesorter(
{ 
排序列表:[[1,0]],
日期格式:“ddmmyyyy”,
标题:{1:{sorter:“shortDate”,dateFormat:“ddmmyyyy”}
});
} 
);
身份证件
约会
顾客
48
11/03/2013
雨衣洗衣机
13
10/01/2013
IESA(炮石)
14
10/01/2013
GVF
41
08/03/2013
胜利
42
08/03/2013
胜利
43
08/03/2013
胜利
40
07/03/2013
拉格收藏有限公司
38
06/03/2013
辛克莱
39
06/03/2013
辛克莱
22
05/03/2013
伊萨维他麦B'Lat
单击相应的列标题会对存储在单元格中的数据的顺序进行排序,但对日期的排序不正确。我试图按天/月/年订购,但似乎没有这样做。表中的数据实际上比我在这里显示的要多,一个日期字段是25/02/2013,它应该高于10/01/2013,这是我提供的屏幕截图中的第二行


我对网络开发比较陌生,任何指点都会非常感激。

美国有一个奇怪的日期约定,在这个约定中,日期往往写为月/日/年,所以它是这样排序的

编辑:tablesorter中已经存在该功能。使用:

$("#tableName").tablesorter({dateFormat: "uk"});

开始,我做的是:在插件的第970行,在
ts.addParser
函数中,我将以下代码更改为
else if
dateformats:

        if (c.dateFormat == "us") {
            // reformat the string in ISO format
            s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/, "$3/$1/$2");
        } else if (c.dateFormat == "uk") {
            // reformat the string in ISO format
            s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/, "$3/$2/$1");
        } else if (c.dateFormat == "dd/mm/yy" || c.dateFormat == "dd-mm-yy") {
            s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2})/, "$1/$2/$3");
            // I added the lines below for the format with full year format,
            // Note that I inverted the day and month in the final format so
            // when the string is converted to date, it converts it right
        } else if (c.dateFormat == "dd/mm/yyyy" || c.dateFormat == "dd-mm-yyyy"){
            s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/, "$2/$1/$3");
        }

感谢您的回复,tablesort库自2010年(发布该问题时)以来已经发生了变化,增加了一些额外的功能。它应该有一个内置解析器,只需在dateFormat中指定格式,即可解析dd/mm/yyyy格式。我怀疑我是愚蠢的,而且使用不当,但我不知道怎么做。你是绝对正确的,尽管很奇怪,因为根据我阅读的文档,dateFormat“uk”应该已经被弃用了。假设2.0.23以后的版本使用“ddmmyyyy”格式,下面的任何内容都使用不同的参数,如您提到的“uk”。不管怎么说,你是对的,它工作顺利。我觉得2.0.5版本比2.0.23版本更高,这让我很困惑,因为我是个白痴。无论如何,非常感谢!上面的评论节省了我这么多时间。当我需要新的格式时,我一直在琢磨为什么“uk”不起作用:
$(“#tableName”).tablesorter({dateFormat:“ddmmyyyy”})实际上,看起来您的代码确实正确地对列进行了排序(),至少在最新版本的脚本()中是这样。嗯,我看到它的行为非常奇怪。尽管如此,克尔什的建议还是成功地按日、月、年(dateFormat=“uk”)正确设置了格式。我认为它适用于最新版本,因为我编写的代码是基于我编写时阅读的更高版本文档。事实证明,我使用了一个旧版本,因为我有一些莫名其妙的愚蠢原因!无论如何,很高兴知道它在我阅读文档的版本中按照我最初的预期工作。