i have following table sorter configuration:
$(function () { $.tablesorter.addparser({ id: "customdate", is: function(s) { //return false; //use above line if don't want table sorter auto detected parser //else use below line. //attention: doesn't check invalid stuff //2009-77-77 77:77:77.0 matched //if doesn't suit alter regex more restrictive return /\d{1,2}\.\d{1,2}\.\d{1,4} \d{1,2}:\d{1,2}:\d{1,2}/.test(s); }, format: function(s) { s = s.replace(/\-/g," "); s = s.replace(/:/g," "); s = s.replace(/\./g," "); s = s.split(" "); return $.tablesorter.formatfloat(new date(s[0], s[1]-1, s[2], s[3], s[4], s[5]).gettime()); }, type: "numeric" }); var $table = $('#table') .tablesorter({ headers: { 1: { sorter:'customdate' } }, sortlist: [[1,1]], // sorting(desc) column index 1 dateformat: 'dd/mm/yyyy hh:mm:ss', theme: 'blue', widthfixed: true, headertemplate: '{content} {icon}', widgets: ['zebra', 'filter'], widgetoptions: { zebra: ["even", "odd"], // filter_anymatch replaced! instead use filter_external option // set use jquery selector (or jquery object) pointing // external filter (column specific or match) filter_external: '.search', // add default type search first name column filter_defaultfilter: {1: '~{query}'}, // include column filters filter_columnfilters: true, filter_placeholder: {search: 'Искать...'}, filter_savefilters: true, filter_reset: '.reset' } }) // needed pager plugin know when calculate filtered rows/pages .addclass('hasfilters') .tablesorterpager({ container: $(".table-pager"), output: '{page} из {filteredpages} ({filteredrows})', size: 5 }); });
but after run application see following table column:
obviously column sorted wrong.
why?
actually no custom date parser needed. dateformat
option should set ddmmyyyy
. settings available option are:
mmddyyyy
ddmmyyyy
yyyymmdd
once set, time included in parsing of date (demo).
Comments
Post a Comment