jquery表分拣机 - dd / mm / yyyy解析器

时间:2011-04-13 21:39:30

标签: jquery parsing tablesorter

搜索后,我似乎无法按英国日期格式排序第一列 - dd / mm / yyyy 有人愿意帮我解决这个问题吗?目前的js是:

$(document).ready(function() 
{ 
    $("table.tablecontainer").tablesorter({widgets: ['zebra']});

    $("#myTable").tablesorter({ 
               sortList: [[0,0]], 
       headers: {
           5:{
              sorter: false
           }
       }
    });
}); 

所有帮助都表示赞赏,因为这不是我可以将自己称为精通的领域!

更新的代码:

$(document).ready(function() 
{ 
    $("#myTable").tablesorter({widgets: ['zebra']});
    $("#myTable").tableSorter( {dateFormat: "uk"} );
    $("#myTable").tablesorter({ 
    sortList: [[0,0]], 
    headers: {
    // assign the sixth column (we start counting zero)
     5:{
     // this is header 6 since the headers start at 0
        // disable it by setting the property sorter to false
     sorter: false
     },
    }});
}); 

4 个答案:

答案 0 :(得分:8)

我个人使用tablesorter.com中的Jquery tablesorter脚本 将dateFormat-属性设置为“uk”。

    $("#myTable").tablesorter({ 
        widgets: ['zebra'],
        dateFormat: "uk",
        sortList: [[0, 0]], 
        headers: { 5: { sorter: false}} 
     });

您使用不同的选项多次调用脚本,这会使可怜的库感到困惑。

只对上述所有不同选项的tablesorter进行一次调用。

我没有检查过zebra小部件,但其余部分的行为与现在一样。

祝你好运: - )

答案 1 :(得分:5)

您需要为此定义 parser 。像

这样的东西
// add parser through the tablesorter addParser method 
$.tablesorter.addParser({ 
    // set a unique id 
    id: 'uk-date', 
    is: function(s) { 
        // return false so this parser is not auto detected 
        return false; 
    }, 
    format: function(s) { 
        var date = s.split('/');
        return new Date(date[2],date[1],date[0]).getTime();
    }, 
    // set type, either numeric or text 
    type: 'numeric' 
}); 

这可能与更好的格式检查有关。我建议在一个单独的脚本中将解析器定义到tablesorter插件,以便您可以轻松升级。您可以在tablesorter脚本之后的<script>标记中引用解析器脚本。

使用就像

$(function() { 
    $("table").tablesorter({ 
        headers: { 
            1: { 
                sorter:'uk-date' 
            } 
        } 
    }); 
});   

答案 2 :(得分:0)

这回答了这个问题,但我可能只是配置了textExtraction选项(见这里:http://tablesorter.com/docs/#Configuration

你可以在隐藏的范围内放置一个可排序的日期(如下所示,为class ='sort_key')并设置如下内容:

textExtraction: function(node) {
  if($j(node).find('.sort_key').is('span') {
    return $j(node).find('.sort_key').text();
  } else {
    return $j(node).text();
  }
}

答案 3 :(得分:0)

http://mottie.github.io/tablesorter/docs/

设置日期格式。以下是可用选项。 (修改版v2.0.23)。

  • “mmddyyyy”(默认)
  • “ddmmyyyy”
  • “年月日”

在以前的版本中,此选项设置为“us”,“uk”或“dd / mm / yy”。修改此选项以更好地适应所需的日期格式。它只适用于四位数年份!

分拣机应设置为“shortDate”,日期格式可以在“dateFormat”选项中设置,也可以设置为“headers”选项中的特定列。请参阅演示页面以了解它是否正常工作。

$(function(){
  $("table").tablesorter({

    dateFormat : "mmddyyyy", // default date format

    // or to change the format for specific columns,
    // add the dateFormat to the headers option:
    headers: {
      0: { sorter: "shortDate" }, // "shortDate" with the default dateFormat above
      1: { sorter: "shortDate", dateFormat: "ddmmyyyy" }, // day first format
      2: { sorter: "shortDate", dateFormat: "yyyymmdd" }  // year first format
    }

  });
}); 

可以通过添加以下内容来修改各个列(它们都做同样的事情),按优先级顺序设置(修改后的v2.3.1):

  • jQuery data data-dateFormat =“mmddyyyy”。
  • metadata class =“{dateFormat:'mmddyyyy'}”。这需要元数据插件。
  • 标题选项标题:{0:{dateFormat:'mmddyyyy'}}。
  • 标题类名称class =“dateFormat-mmddyyyy”。 整体dateFormat选项。

在我的情况下,我使用了

$("#myTable").tablesorter({dateFormat: "uk"}) 

版本。