使用jQuery tablesorter对mm / yy日期进行排序

前端之家收集整理的这篇文章主要介绍了使用jQuery tablesorter对mm / yy日期进行排序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用 jquery tablesorter插件对表进行排序.我的表格中的列以mm / yy格式显示日期.
<tr>
    <td class="col-name">...</td>
    ...
    <td rel="2000" class="col-dob">10/00</td>
    ...
</tr>
<tr>
    <td class="col-name">...</td>
    ...
    <td rel="1986" class="col-dob">11/86</td>
    ...
</tr>

注意:

>每个细胞都有一个独特的类
>日期以mm / yy格式显示
>带有日期的单元格也会收到年份

我的jQuery代码如下:

// add parser through the tablesorter addParser method
$.tablesorter.addParser({
        // set a unique id
        id: 'user-birthdate',is: function(s) {
                // return false so this parser is not auto detected
                return false;
        },format: function(s) {
                // format your data for normalization

                var dateSplit = s.split('/');

                if(2 !== dateSplit.length)
                        return 0;

                return new Date(dateSplit[1],dateSplit[0],1);
        },// set type,either numeric or text
        type: 'numeric'
});

myClass.init = function() {
        $('.module .user table').tablesorter({
                sortList: [[0,0]],widgets: ['zebra'],headers: {
                        5: {
                                sorter:'user-birthdate'
                        }
                }
        });
}

myClass.init();

我的问题是tableSorter将00解释为1900而不是2000,因此排序的数据不正确.

任何线索如何解决这个问题?我正在使用jQuery 1.2.6和最新版本的tablesorter.

解决方法

我发现,tablesorter文档通常是无用的.它看起来很多,但缺乏细节.

在这种情况下,它不会告诉您解析器的函数签名.幸运的是,你可以阅读the unminified code来找到它.

在那里我们发现元数据解析器执行此操作:

format: function(s,table,cell) {

这意味着您可以将格式方法调整为:

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

    var dateSplit = s.split('/');
    var year = $(cell).attr('rel');

    if(2 !== dateSplit.length)
        return 0;

    return new Date(year,1);
},

或者至少与此类似.我实际上没有测试过这个.但它应该至少非常接近.

猜你在找的jQuery相关文章