在生产服务器上使用 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 函数也可能改变数据的处理方式.

【讨论】:

我刚刚添加了一些关于我的问题的新信息。还有其他想法吗? 您是否尝试删除单元格中多余的&lt;/a&gt;?此外,定义单元格的宽度可以在标题thcol 中完成,然后您只需执行一次。 天啊!我从未见过 和 出现在本地计算机和服务器上,但服务器似乎反应不同!我删除它,现在一切正常!谢谢!

以上是关于在生产服务器上使用 jQuery tablesorter 插件对日期列进行排序不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Jquery 验证不适用于登台和生产系统

Rails - jQuery 不能在 Heroku 的生产环境中工作

开发和生产中的不同 jQuery 版本

初识Jquery

如何通过 https 在生产服务器上使用 Laravel Echo

为啥我们不应该在生产服务器上的 mysql 查询中使用 Select *?