문제

I try to define a custom date parser for jquery plugin. Here is my table : table using jquery tablsorter plugin

I've tried to define a custom date parser in my jQuery like this :

<script type="text/javascript" src="{% static 'js/jquery.tablesorter.min.js' %}"></script>
<script type="text/javascript">
    $(document).ready(function() {
        $('.tablesorter').tablesorter();

         // add parser through the tablesorter addParser method 
        $.tablesorter.addParser({
            id: "customDate",
            is: function(s) {
                return /[0-9]{1,2} [a-zA-Z]+, [0-9]{1,2}:[0-9]{1,2}/.test(s);
                //return false
            },
            format: function(s) {
                s = s.replace(/,/,"").replace(/:/," ");
                s = s.replace(/January/,1).replace(/February/,2).replace(/March/,3).replace(/April/,4).replace(/May/,5).replace(/June/,6).replace(/Jully/,7).replace(/August/,8).replace(/September/,9).replace(/October/,10).replace(/November/,11).replace(/December/,12);
                s = s.split(" ");
                s = s[1]*1000000+s[0]*10000+s[2]*100+s[3]
                return s
            },
            type: "numeric"
        });
    });

</script>

But it doesn't work. It looks like the customDate parser is not called at all. The Date field is only sorted by the first number (the day of the date).

It's the first time I define a custom parser. I've readed those subject to do it :

http://tablesorter.com/docs/example-parsers.html

date Sorting Problem with Jquery Tablesorter

도움이 되었습니까?

해결책

I fixed it. My mistake was to use the $.tablesorter.addParser inside the $(document).ready(function() function...

I just did it this way :

        $.tablesorter.addParser({
        id: "customDate",
        is: function(s) {
            return /^[0-9]{1,2} [a-zA-Z]+, [0-9]{1,2}:[0-9]{1,2}$/.test(s);
        },
        format: function(s) {
            s = s.replace(/,/,"").replace(/:/," ");
            s = s.replace(/January/,1).replace(/February/,2).replace(/March/,3).replace(/April/,4).replace(/May/,5).replace(/June/,6).replace(/Jully/,7).replace(/August/,8).replace(/September/,9).replace(/October/,10).replace(/November/,11).replace(/December/,12);
            s = s.split(" ");
            s = s[1]*1000000+s[0]*10000+s[2]*100+s[3];
            return s;
        },
        type: "numeric"
    });

    $(document).ready(function() {
        $('.tablesorter').tablesorter({ 
            headers: { 
                1: { 
                    sorter:'customDate' 
                } 
            } 
        }); 

    });

and now it's working correctly !

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top