如何为tablesorter jquery插件定义自定义日期解析器?

时间:2014-05-06 06:44:41

标签: jquery python django django-templates tablesorter

我尝试为jquery插件定义自定义日期解析器。 这是我的表: table using jquery tablsorter plugin

我试图在我的jQuery中定义一个自定义日期解析器,如下所示:

<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>

但它不起作用。看起来根本没有调用customDate解析器。 日期字段仅按第一个数字(日期的日期)排序。

这是我第一次定义自定义解析器。我已经引起了那些主题:

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

date Sorting Problem with Jquery Tablesorter

1 个答案:

答案 0 :(得分:2)

我修好了。 我的错误是使用$.tablesorter.addParser函数中的$(document).ready(function() ...

我就是这样做的:

        $.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' 
                } 
            } 
        }); 

    });

现在它正常工作了!