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

标签 jquery tablesorter

我正在使用 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, table, 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, dateSplit[0], 1);
},

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

关于jquery - 使用 jQuery tablesorter 对 mm/yy 日期进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/450936/

相关文章:

javascript - 使用 jQuery 获取 div 中的特定下拉菜单

javascript - 为什么这个 JSON 显示为未定义?

jquery - 忽略特定列表排序器的排序

javascript - 按字母过滤表格

javascript - jQuery 表排序器 : How to detect if column is already sorted?

javascript - Tablesorter 使用连字符对数字字段进行排序

javascript - 如何使用 javascript/jquery 读取 json 中的单个对象和对象数组

javascript - 如何使用 jQuery 的scroll() 事件在每个像素移动时执行函数

php - 多个jquery-ui id应用于从数据库返回的值

jquery-mobile - 如何从表格中隐藏列切换按钮?