Заголовок jquery / tablesorter отключен, если столбец даты - PullRequest
0 голосов
/ 03 января 2011

Я использую jquery / tablesorter для своей таблицы, столбцы которой представляют собой смесь текста и цифр.Все работало нормально.Затем я добавил новый столбец даты, и теперь заголовки полностью отключены.то есть я не могу сортировать ни по одному столбцу.Я запустил firebug и вижу ошибку при загрузке страницы:

s.replace не является функцией в приведенном ниже коде

this.formatFloat = function (s) {
  var i = parseFloat(s.replace(/,/g, ''));
  return (isNaN(i)) ? 0 : i;
};

Когда я ставлюТочка останова и увидеть значение s, для столбца даты это некоторое число, например 736283783, тогда как для всех остальных это строка типа «1» или «123».Я пробовал разные форматы для даты, такие как "дд / мм / гг", "дд-мм-гггг", "1 января 2011" и т. Д. Без удачи.

Обновление: приведенный выше код находится в jquery.tablesorter.js.Это не тот код, который я написал.

Мой исходный код таблицы выглядит следующим образом:

<table id="historyTable" class="fullwidth sortable">
        <thead>
            <tr>
                <th>Status</th>
                <th>Start</th>
                <th>End</th>
                <th>Type</th>
                <th>Keyword</th>
             </tr>
        </thead>
             <tr>
                <td>Active</td>
                <td>2008-09-18</td>
                <td></td>
                <td>Info</td>
                <td>TF</td>
             </tr>
             <tr>
                <td>Inactive</td>
                <td>2010-09-18</td>
                <td></td>
                <td>Info</td>
                <td>ZX</td>
             </tr>
       </table>

Мой JS-код просто вызывает TableSorter, как это: jQuery ("table.sortable"). Tablesorter();Что я делаю не так?

1 Ответ

2 голосов
/ 03 января 2011

попробуйте это:

this.formatFloat = function (s) {
  // add .toString() to convert it to a string
  var i = parseFloat(s.toString().replace(/,/g, ''));
  return (isNaN(i)) ? 0 : i;
};

возможно, это не сработает, потому что s не является строкой ?

Update; так как то так:

this.formatFloat = function (s) {
  // add .toString() to convert it to a string<br/>
  var strDate = new Date(s.toString().replace(/,/g, ''));   
  var i = parseFloat(strDate);

  return (isNaN(i)) ? 0 : i;
};
...