1

現在、 http ://www.tablesorter.com にある JQuery Tablesorter プラグインを使用していますが、日付とテキストの両方を含む列に問題があります。jsfiddle は次のとおりです。

http://jsfiddle.net/M3V4U/1/

名フィールドのタイトルをクリックしても、ランダムな日付が含まれているため、並べ替えられません。テキストの並べ替えを強制しようとしましたが、うまくいきません。誰にもアイデアはありますか?

4

2 に答える 2

2

メタデータを使用してソータータイプを設定しようとしているようです

<th class="{sorter: 'text'}">first name</th>

しかし、メタデータプラグインはそのデモにロードされていませんでした。したがって、メタデータプラグインをロードするか、ヘッダーオプションにソータータイプを追加します。

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

これが更新されたデモです。

于 2012-10-16T05:10:14.623 に答える
0

それほど素晴らしい答えではありませんが、それは今のところうまくいきます。

このパーサーを削除しました:

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"
});

日付パーサーの実行が完全に停止するため、これで問題が解決したようです。これはおそらく他のシナリオで問題を引き起こす可能性がありますが、今のところ私のページではうまくいくようです. 人々がそれらを持っている場合、私はまだ他の答えを受け入れています。

于 2012-10-15T17:58:31.140 に答える