如何阻止表格底部的破折号

时间:2013-09-17 14:52:17

标签: php sorting block tablesorter

所以,我的问题在标题中。 我有一张包含这些数据的表格:

9
6
5
' - '
5
2.3
987个
' - '
' - '
54.2
41个
52个
66个
55

注意:我用简单的引号包围我的短划线以获得最佳可读性。 当我使用tablesorter时,一切正常,但是我的破折号位于顶部,我的数字按顺序排序,反之亦然。

或者,我希望我的破折号留在桌子的底部,无论是asc还是desc sort ..

这是我简单的js:

 $("#table_conso_visu").tablesorter({
        widgets        : ['zebra', 'columns'],
        usNumberFormat : false,
        sortReset      : true,
        sortRestart    : true,
               })

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

如果您使用我的fork of tablesorter,则可以使用stringTo选项设置文本字符串在数字列中的排序位置。

查看this demo

答案 1 :(得分:0)

我找到了如何解决我的问题。 我创建了一个过滤器,它返回一个最小值。 因此,当我的排序是asc时,我的破折号保持在底部,当我的排序是desc时,它保持在顶部。 我认为,当我的排序是desc时,破折号位于顶部是合乎逻辑的,因为它就像我放0;)

所以这是我的过滤器:

$.tablesorter.addParser({
            id: "dashSorter",
            format: function(s) {
              return ($.trim(s) === '-') ? Number.MIN_VALUE : $.tablesorter.formatFloat(s.replace(/[,:]/g, ""));
            },
            type: "numeric"
          });

我把':'放在我的正则表达式中因为我有时间格式HH:mm:ss(你可以删除它) 我的脚本排在我的桌子上:

$("table[name=table_sorter]").tablesorter({

        // initialize zebra striping and filter widgets
        widgets :  ['zebra', 'filter'],
        headers : {
            1 : {sorter:'dashSorter'},
            2 : {sorter:'dashSorter'},
            3 : {sorter:'dashSorter'}
        },
        widgetOptions : {
            // css class applied to the table row containing the filters & the inputs within that row
            filter_cssFilter   : 'tablesorter-filter',

            // If there are child rows in the table (rows with class name from "cssChildRow" option)
            // and this option is true and a match is found anywhere in the child row, then it will make that row
            // visible; default is false
            filter_childRows   : false,

            // if true, filters are collapsed initially, but can be revealed by hovering over the grey bar immediately
            // below the header row. Additionally, tabbing through the document will open the filter row when an input gets focus
            filter_hideFilters : false,

            // Set this option to false to make the searches case sensitive
            filter_ignoreCase  : true,

            // jQuery selector string of an element used to reset the filters
            filter_reset : '.reset',

            // Delay in milliseconds before the filter widget starts searching; This option prevents searching for
            // every character while typing and should make searching large tables faster.
            filter_searchDelay : 300,

            // Set this option to true to use the filter to find text from the start of the column
            // So typing in "a" will find "albert" but not "frank", both have a's; default is false
            filter_startsWith  : false
        }
    });

我希望能帮助别人并很快见到你;)