我最近遇到了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
答案 0 :(得分: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,'');
答案 1 :(得分:0)
感谢您昨天对我进行故障排除,非常感谢。
我现在有这个工作。
我遇到的问题是如果表包含任何空格,则tablesorter将无法工作,我的解决方案是使用$ .trim删除它但我不知道(直到昨天)$ .trim在IE8 / 7 /中不起作用6。
我没有找到$ .trim的替代品来使这项工作在IE8 / 7/6中完成 - 尽管以下帖子可能有用
.trim() in JavaScript not working in IE
http://www.javascripter.net/faq/trim.htm
但我注意到在其中一个xsl文件中存在以下代码#160;这导致了所有问题。在与开发人员一起质疑这一行之后,看起来这是为了防止8年前浏览器中出现的布局问题。毋庸置疑,我现在已经在解析器中删除了这个和$ .trim行,并且它在所有浏览器中都能正常工作。呼....