Javascript 使用tablesorter对混合数据列进行排序

Javascript 使用tablesorter对混合数据列进行排序,javascript,jquery,tablesorter,Javascript,Jquery,Tablesorter,我目前使用的是在这里找到的JQuery Tablesorter插件:,我在一个包含日期和文本的列上遇到了问题。以下是JSFIDLE: 如果你点击名字字段标题,它将不会排序,因为里面有一个随机日期。我试着强制文本排序,但不起作用。有人有什么想法吗?找到了一个不太好的答案,但目前还有效 我删除了这个解析器: ts.addParser({ id: "shortDate", is: function (s) { return /\d{1,2}[\/\-]\d{1,2}[

我目前使用的是在这里找到的JQuery Tablesorter插件:,我在一个包含日期和文本的列上遇到了问题。以下是JSFIDLE:


如果你点击名字字段标题,它将不会排序,因为里面有一个随机日期。我试着强制文本排序,但不起作用。有人有什么想法吗?

找到了一个不太好的答案,但目前还有效

我删除了这个解析器:

ts.addParser({
    id: "shortDate",
    is: function (s) {
        return /\d{1,2}[\/\-]\d{1,2}[\/\-]\d{2,4}/.test(s);
    }, format: function (s, table) {
        var c = table.config;
        s = s.replace(/\-/g, "/");
        if (c.dateFormat == "us") {
            // reformat the string in ISO format
            s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/, "$3/$1/$2");
        } else if (c.dateFormat == "uk") {
            // reformat the string in ISO format
            s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/, "$3/$2/$1");
        } else if (c.dateFormat == "dd/mm/yy" || c.dateFormat == "dd-mm-yy") {
            s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2})/, "$1/$2/$3");
        }
        return $.tablesorter.formatFloat(new Date(s).getTime());
    }, type: "numeric"
});

这似乎解决了我的问题,因为它完全停止了日期分析器的执行。这可能会在其他场景中引起问题,但目前似乎对我的页面有效。如果人们有其他答案,我仍然愿意回答。

看起来您正在尝试使用元数据设置分类器类型

<th class="{sorter: 'text'}">first name</th>
这是一个例子

$("table").tablesorter({
  headers: {
    0: { sorter: "text" },
    4: { sorter: "percent" }
  }
});