2014-02-18 5 views
1

tablesorter не сортирует 1 столбец правильно, а другой он делает!jquery tablesorter не сортирует отрицательную валюту правильно

Я пробовал несколько разных пользовательских парсеров, но ни один из них не работает. Смотрите пример здесь

http://jsfiddle.net/jybMB/

format: function(s) { 
      // format your data for normalization 

      var value = replaceAll(',','',s.toLowerCase()); 

      //value = replaceAll('-','',value); 

      //return parseFloat(value.replace('$', '')); 

      return $.tablesorter.formatFloat(value.replace(new  RegExp(/[^0-9-.]/g),"")); 
     }, 

Вы можете увидеть, что Col1 не получить правильно отсортированные и но Col2 делает. Я подозреваю, что это связано с отрицательным символом, но странно, что Col2 работает без каких-либо настраиваемых парсеров.

+0

Проблема находится в '$ ("# servicesTable") функция tablesorter'.. Если вы замените его только тем, который предоставлен @Brandon (и укажите тот же идентификатор), ваш код работает [скрипт] (http://jsfiddle.net/nT5qq/). В противном случае код в синтаксическом анализаторе никогда не выполняется (я добавил 'alert (" hello ")' перед оператором return и не был уволен. –

+0

Спасибо, что поделились этой проблемой! У меня будет синтаксический анализатор валюты в следующем обновлении поэтому он автоматически обнаруживает валюту с отрицательным значением после символа валюты. – Mottie

+0

@AB код работает вне скрипки в порядке, конечно код не выполняется, если вы меняете ID, он должен быть тем же ID, что и таблица, которую он пытается сортировать. Я поставил предупреждение в функции парсера раньше, и предупреждение не отображается, но я знаю, что синтаксический анализ - рабочий – user2760338

ответ

4

Как о чем-то вроде этого:

Live Demo

$.tablesorter.addParser({ 
    // set a unique id 
    id: 'money', 
    is: function(s) { 
     // return false so this parser is not auto detected 
     return false; 
    }, 
    format: function(s) { 
     return parseInt(s.replace(/\$/,'').replace(/\,/,''),10); 
    }, 
    // set type, either numeric or text 
    type: 'numeric' 
}); 


$("#servicesTable").tablesorter({ 
    sortList: [[0,1]], 
    headers: 
    { 
     0 : { sorter: "money" }, 
     1 : { sorter: "money" }   
    } 
}); 
+0

благодарю работ, спасибо! – user2760338

Смежные вопросы