2

これが私の問題です、

現在、JQueryテーブルソーターを使用していますが、Web上でコンマディジットパーサーを見つけました。私が抱えている問題は、それが機能していないように見えることです。

したがって、列は次のようにソートされます。

  1. 4,666
  2. 141,666
  3. 293
  4. 341,666
  5. 346
  6. 461,676

これは次のように並べ替える必要があります

  1. 293
  2. 346
  3. 4,666
  4. 141,666
  5. 341,666
  6. 461,676

私が使用しているパーサーは次のとおりです。

$( function() { 

    $.tablesorter.addParser({
        id: "fancyNumber",
        is: function(s) {
            return /^[0-9]?[0-9,\.]*$/.test(s);
        },
        format: function(s) {
            return $.tablesorter.formatFloat(s.replace(/,/g, ''));
        },
        type: "numeric"
    });
}); 

私は自分が間違っていることを知らないだけです。間違ってロードしていますか?パーサーは間違っていますか?私はここで本当に助けが必要で、しばらくの間この問題に苦しんでいます。

編集:列の生成方法とユーザーが選択できる列のため、どのヘッダーが含まれているかがわかりません。ここに記載されているように、class = "{sorter:'fancyNumber'}"コマンドを使用してみました:http://tablesorter.com/docs/example-meta-parsers.html

**編集:**列の1つが正しく機能しているように見えますが、この列にはまだ問題があります。多分それは数字とコンマで区切られた数字を持っているからですか?

4

10 に答える 10

10

この質問に出くわした人のために。クラスをヘッダー行に追加する必要がありました。したがって、並べ替えたいヘッダーには、次のクラスを追加しました。

<th class=\"{sorter: 'fancyNumber'}\">

これにより、デフォルトでソーターがオンになり、うまく機能しました。

私のやり方での私の誤りに気付いたのは、デバッガをそのようにオンにしたことでした。

$("#tblInfo").tablesorter({debug:true, widgets: ['zebra'], widgetZebra: { css: ['d0', 'd1']} });
于 2009-05-18T18:00:07.710 に答える
3

これは、メタデータ プラグインを含めるのを忘れた場合にも発生する可能性があります

** これが Google での最初の検索結果だったので、ここに投稿しました。

于 2009-06-10T14:49:07.360 に答える
2

ここで私がやったこと:

$(document).ready(function() {
      $.tablesorter.addParser({
        id: 'fancyNumber',
        is:function(s){return false;},
        format: function(s) {return s.replace(/[\,\.]/g,'');},
        type: 'numeric'
    });
    $("table").tablesorter({headers: {0: {sorter: 'fancyNumber'}}});
});

コンマとドット区切りで動作しました。

テストhttp://jsbin.com/equici5

于 2011-06-09T06:51:54.583 に答える
0

.tablesorter()宣言でパーサーを明示的に割り当ててみてください。

.tablesorter( { headers: { 0: { sorter:'fancyNumber' } }); 

ソースを見る

于 2009-05-18T03:16:06.020 に答える
0

次の正規表現を試してみます: /(\d{1,3})?(\,\d{3})*/

于 2009-06-09T16:34:10.120 に答える
0

パーサーが機能するはずであることは完全に正しいです。そうでない理由は、プラグインのバグによるものです。要するに、プラグインはカンマを含む数値を正しくソートできると考え、組み込みのソーターを使用しますが、正しくソートできません。

それを修正するにはいくつかの方法があります。

まず、(上記で提案したように)ソート機能の使用を強制できます(プラグインの初期化時に、またはjavascriptで)。

次に、プラグインを編集して、独自の関数を優先して使用することができます。これは、プラグインの 220 行目の for ループの方向を逆にすることで実現できます。

3 番目に、桁検出関数を変更してコンマを受け入れないようにするか (プラグインの 861 行目)、デフォルトの数値ソーターを変更してコンマを処理する (プラグインの 852 行目) ことにより、破損したデフォルトの並べ替え動作を修正できます。

tablesorter の Google コード ページでこの問題を提起しました: http://code.google.com/p/tablesorter/issues/detail?id=6

于 2011-12-21T01:48:03.853 に答える
0

パーサーは最初の tbody 行だけを見て、使用するパーサーを検出します。最初の行にはコンマが含まれていないと思います。私は同じ問題に遭遇し、最終的に必要なパーサーを class="{sorter: 'fancyNumber'}" を使用して強制しました

于 2009-07-06T23:49:32.320 に答える