JQuery TableSorter с форматом бухгалтерского номера - PullRequest
1 голос
/ 05 мая 2009

Я использую jquery tablesorter, и я пытаюсь отсортировать столбец со значениями, подобными этому:

$ 100 000 $ 38000 (4000 $) $ 2000

Данные в () являются отрицательными числами. При использовании функции сортировки по умолчанию она не распознает (4000 долларов) как отрицательное число, поэтому я пытаюсь создать пользовательскую функцию для ее обработки.

Решение ниже - то, что я придумала, и оно отлично работает. Но мне интересно, есть ли лучшее решение? Я новичок в jquery и просто ищу понимание.

$(document).ready(function() 
    { 
        $.tablesorter.addParser({
                // set a unique id
                id: 'currency-column',
                is: function(s) {
                        // return false so this parser is not auto detected
                        return false;
                },
                format: function(s) {
                         s = s.replace(/$/g,"");
                         s = s.replace(/\(/g,"-");
                         s = s.replace(/\)/g,"");
                         return $.tablesorter.formatFloat(s.replace(new RegExp(/[^0-9.-]/g),""));
                },

                type: 'numeric'
        });

        $("#myTable").tablesorter({
            headers: {
                3: { sorter:'currency-column' },
                4: { sorter:'currency-column' },
                5: { sorter:'currency-column' },
                6: { sorter:'currency-column' },
                7: { sorter: false },
                10: { sorter:'currency-column' }
            }
        }); 

    } 
);

Опять же, он делает то, что требуется, и я доволен результатами (и, возможно, я должен просто оставить это там ...), но если есть лучшее решение, я бы хотел услышать его.

Спасибо

1 Ответ

2 голосов
/ 30 октября 2010

Как насчет удаления ","

s = s.replace(/,/g,"");

Итак, ваша функция становится:

format: function(s) {
         s = s.replace(/$/g,"");
         s = s.replace(/\(/g,"-");
         s = s.replace(/\)/g,"");
         s = s.replace(/,/g,"");
         return $.tablesorter.formatFloat(s.replace(new RegExp(/[^0-9.-]/g),""));
},

^. ^

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...