Tablesort对一列int和字符串进行排序

时间:2014-11-13 20:56:11

标签: types tablesorter

我有一个问题,我的tablesorter列包含看起来像这样的数据,[20823,C420837,9823927,47-123,C47293]以及NoneType的空格 问题是当我尝试对它们进行排序(asc或desc)时,我的tablesort将所有数字类型组合在一起,然后我的其余数据按字母顺序按另一列中的字段排序。我想要将所有数据与所有NoneTypes一起排序,无论是在顶部还是在下面,而不是整个间隔。任何有关如何自定义排序此数据的帮助都将非常感激

编辑:我添加了自定义解析器

$.tablesorter.addParser({ 
    // set a unique id 
    id: 'enumsos', 
    is: function(s) { 
        // return false so this parser is not auto detected 
        return false; 
    }, 
    format: function(s) { 
        // format your data for normalization 
        return s.toString(); 
    }, 
    // set type, either numeric or text 
    type: 'text' 
}); 

$(function() { 
    $("table").tablesorter({ 
        headers: { 
            7: { 
                sorter:'enumsos' 
            } 
        } 
    }); 
});

现在我遇到了一个新问题,排序有效,但它只能对我的东西进行排序,这适用于所有列!发生了什么事?

1 个答案:

答案 0 :(得分:0)

我不确定如何对47-123值进行排序,但是如果您修改解析器以从内容中删除所有非数字值(小数点除外),那么只有数字值将排序(demo

$.tablesorter.addParser({
    // set a unique id 
    id: 'enumsos',
    is: function (s) {
        // return false so this parser is not auto detected 
        return false;
    },
    format: function (s) {
        // format your data for normalization 
        return s.toString().replace(/[^\d.]/g, '');
    },
    // set type, either numeric or text 
    type: 'numeric'
});

$(function () {
    $('table').tablesorter({
        headers: {
            0: {
                sorter: 'enumsos'
            }
        }
    });
});

对于空单元格,您可以使用emptyTo option设置它们排序的位置,或者如果该列包含非数字字符串,例如" N / A"然后你可以使用stringTo option,但首先需要修改上面的解析器而不是替换所有非数字。