0

我最近遇到了无法按日期排序的 tablesorter.js 问题,因为空格破坏了我的脚本(tablesorter,不会正确按日期排序

我终于想通了,并将代码更改为以下

$.tablesorter.addParser({
    id: 'dayMonthYear',
    is: function (s) {
        return false;
    },
    format: function (s) {
        s = $.trim(s.replace(/\s+/g, ' '));
        var date = s.match(/^(\d{1,2})[ ](\w{3})[ ](\d{4})$/);
        var day = String(date[1]);
        if (day.length == 1) {
            day = "0" + day;
        }
        var month = monthNames[date[2]];
        var year = date[3];
        return sortableDate = '' + year + month + day;
    },
    type: 'numeric'
});
var monthNames = {};
monthNames["Jan"] = "01";
monthNames["Feb"] = "02";
monthNames["Mar"] = "03";
monthNames["Apr"] = "04";
monthNames["May"] = "05";
monthNames["Jun"] = "06";
monthNames["Jul"] = "07";
monthNames["Aug"] = "08";
monthNames["Sep"] = "09";
monthNames["Oct"] = "10";
monthNames["Nov"] = "11";
monthNames["Dec"] = "12";

这似乎可以解决问题,但我刚刚注意到它在 IE8 或 IE7 中不起作用。在 IE9 中似乎很好。

旧版本的 IE 有问题$.trim吗?如果是这样,有解决办法吗?

谢谢


编辑:认为我可能越来越接近答案,刚刚发现这个http://www.javascripter.net/faq/trim.htm

4

2 回答 2

0

感谢您昨天与我一起解决此问题,非常感谢。

我现在有这个工作。

我遇到的问题是如果表包含任何空格,tablesorter 将无法工作,我的解决方案是使用 $.trim 删除它,但我不知道(直到昨天)$.trim 在 IE8/7/6 中不起作用。

我没有找到 $.trim 的替代品来使这项工作在 IE8/7/6 中工作 - 尽管以下帖子可能有用

JavaScript 中的 .trim() 在 IE 中不起作用

http://www.javascripter.net/faq/trim.htm

然而,我确实注意到在其中一个 xsl 文件中存在以下代码 #160; 这导致了所有问题。在向开发人员询问这条线之后,似乎添加了这条线是为了防止 8 年前出现在浏览器中的布局问题。不用说,我现在已经在我的解析器中删除了它和 $.trim 行,它在所有浏览器中都可以正常工作。呼……

于 2012-05-22T09:30:42.727 回答
0

我可能错了,但我认为您没有正确替换空白

s = $.trim(s.replace(/\s+/g, ' '));

在您的代码中,您可以看到空格没有被删除。

尝试

s = $.trim(s.replace(/\s+/g, ''));

还有一点,你不能通过删除单词$.trim前后的空格来删除单词中的空格。

ex :-

var trimmed_text = $.trim('hello world '); 


$.trim  will only remove the space after **world**

所以变量trimmed_text 现在是'hello world'

更新

试试这个代码

s.replace(/ /g,'');
于 2012-05-21T13:48:08.467 回答