TableSorter jQuery RegExp не работает на IE7 - PullRequest
2 голосов
/ 27 апреля 2011

Я создал новый парсер для плагина javascript tablesorter, который прекрасно работает во всех браузерах, кроме IE7!

$.tablesorter.addParser({
    id: 'currencyXYZ',
    is: function (s) {return /[^\d]*$/.test(s);},
    format: function (s) {return $.tablesorter.formatFloat(s.replace(new RegExp(/[^\d]/g),''));},
    type: 'numeric'
});

В основном я заменяю все символы, кроме чисел в ячейке таблицы, верно? Если в ячейке таблицы у меня есть "от £ 500" , он возвращает "500" , но в IE7 я получаю что-то вроде "1.09387348273428e + 35" ... Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 27 апреля 2011

Первая проблема заключается в том, что вы передаете литерал регулярного выражения в функцию-конструктор RegExp, которая хочет получить строку.т.е. это неправильный синтаксис:

s.replace(new RegExp(/[^\d]/g),''));

Чтобы исправить это, просто используйте литерал регулярного выражения, например, так:

s.replace(/[^\d]/g,''));
0 голосов
/ 27 апреля 2011

Почему бы не попробовать что-то подобное вместо этого?

format: function (s) {
    var re = new RegExp(/£([\d][\d,]+)/g);
    var m = re.exec(s);
    return m == null ? 0 : m[1].replace(',', '');
}

Это будет активно искать первое значение, которое соответствует £\d[\d,]+, возвращая только числовой компонент. Возможно, вам придется настроить это, если вы поддерживаете несколько валют, международные форматы номеров и т. Д.

...