【发布时间】:2012-05-21 13:33:55
【问题描述】:
我最近在使用 tablesorter.js 时遇到了问题,我无法按日期排序,因为空格破坏了我的脚本 (tablesorter, wont sort by date correctly)
我终于想通了,把代码改成下面这样
$.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
【问题讨论】:
-
我刚刚注意到它在 IE8 或 IE7 中不起作用 什么不起作用?什么错误?
-
对不起,ManseUK,我没有解释得太清楚。我最初的问题是我无法按日期排序(dd mmm yyyy),但事实证明是空格导致我的脚本中断。我现在已经使用 $.trim 删除了空格,并且脚本似乎运行完美——允许我按日期排序——但由于某种原因,它在 IE8/7 中仍然中断。虽然在 IE9 中运行良好....
-
明白这一点....但它是如何工作的?你得到什么错误?空格被删除了吗?
-
@Gillian 只是一个猜测......但这条线
return sortableDate = '' + year + month + day;在 jslint 上无效 - 尝试将其更改为return '' + year + month + day;并在 IE8/7 中运行它
标签: jquery internet-explorer tablesorter trim