在IE中使用jquery trim

时间:2012-05-21 13:33:55

标签: jquery internet-explorer tablesorter trim

我最近遇到了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

2 个答案:

答案 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行,并且它在所有浏览器中都能正常工作。呼....