在生产服务器上使用 jQuery tablesorter 插件对日期列进行排序不起作用
Posted
技术标签:
【中文标题】在生产服务器上使用 jQuery tablesorter 插件对日期列进行排序不起作用【英文标题】:Sorting not working on date column with the jQuery tablesorter plugin on de production server 【发布时间】:2012-11-11 06:41:11 【问题描述】:我在使用 ASP.NET 生成的表上使用tablesorter plugin。我的问题是有一列带有一些日期(格式 = YYYY-MM-DD),并且分拣机只在我的本地机器上工作。
在服务器上发布时,它不会。我打开调试模式,发现在本地机器上,自动检测到的列的类型是isoDate
,而在生产机器上,是shortDate
。
重要提示:当您查看日期时,它看起来完全一样。例如:2010-11-15。没有区别。但是我很确定机器本身的本地设置非常不同,因此必须解释为什么一个被认为是 isoDate 而另一个被认为是 shortDate。
我还验证了该插件包含这两种格式的分类器。我有最新版本,似乎没有人有这个错误。
我做错了什么?
我已经尝试过,强制使用 isoParser :
$("#ChangeLogTable1").tablesorter(headers: 0: sorter: 'isoDate');
编辑
我已经为此更改了我的代码(见下文)以强制“作为字符串”排序,它可以工作,因为我的日期格式给了我这种可能性,但如果格式为 dd-mm-yyyy,它将不起作用.所以我的问题仍然存在,但这是一种解决方法。
$(this).tablesorter( headers: 0: sorter: 'text' );
编辑 2
这里是一些表格html,我只是用XXXX替换了一些敏感数据
<div style="width: 1300px">
<table id="ChangeLogTable1" class="table tablesorter table-bordered">
<thead>
<tr>
<th>Date de correction</th>
<th>Correcteur</th>
<th>BugID</th>
<th>Catégorie</th>
<th>Module</th>
<th>Description de la correction</th>
<th>Impact</th>
<th>Rapporté par</th>
<th>Demandé par</th>
</tr>
</thead>
<tbody>
<tr>
<td > 2012-10-10</a></td>
<td > XXXX</td>
<td > XXXX</td>
<td > XXXX </td>
<td > XXXX </td>
<td > XXXX </td>
<td > </td>
<td > XXXX </td>
<td > </td>
</tr>
【问题讨论】:
你能分享一些你的HTML吗? 两台机器上的 HTML 相同(使用 winmerge 检查),并且该列仅包含格式为 2010-11-15 的日期,因此不需要 html 代码。请参阅更新后的问题,了解更多信息。 【参考方案1】:我要求 HTML 是因为 isoDate
解析器只会在数据格式为 ####/##/##
时自行设置:
/^\d4[\/-]\d1,2[\/-]\d1,2$/.test(s);
shortDate
解析器只会在数据看起来像这样 ##/##/####
或 ##/##/##
时自行设置:
/\d1,2[\/\-]\d1,2[\/\-]\d2,4/.test(s); // from tablesorter v2.0.5
因此解析器代码已被更改或 html 格式被错误解释;但这并不能解释为什么在 headers
选项中设置 isoDate
不起作用。
第一行日期可能无意中具有不同的格式,或某些内联 HTML(即,数字包裹在样式范围内),导致检测在每列中使用哪个解析器的代码误解数据。所以这就是我问 HTML 是什么样子的原因。
我知道您共享了初始化代码,但我想我还应该询问是否还有其他未显示的配置选项正在使用,因为修改 textExtraction
函数也可能改变数据的处理方式.
【讨论】:
我刚刚添加了一些关于我的问题的新信息。还有其他想法吗? 您是否尝试删除单元格中多余的</a>
?此外,定义单元格的宽度可以在标题th
或col
中完成,然后您只需执行一次。
天啊!我从未见过 和 出现在本地计算机和服务器上,但服务器似乎反应不同!我删除它,现在一切正常!谢谢!以上是关于在生产服务器上使用 jQuery tablesorter 插件对日期列进行排序不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Rails - jQuery 不能在 Heroku 的生产环境中工作