質問

ここでの私の問題

私は現在使用し、JQueryテーブルソーターなどの見、カンマで区切桁のパーサです。問題はいるのではなさそうです。

この列はソートされて

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

んかんでいるのは間違っています。私への搭載が悪いのでしょうか。は、パーサが悪いのでしょうか。僕が実際の助けを有していて苦しむことでこの問題です。

編集: いかに成っ列の列させ、ユーザが選択したかに伝わっているヘッダにするにすぎません。このクラスを利用="{ソータ:'fancyNumber'}"コマンドとして記述は、当社が現段階において: http://tablesorter.com/docs/example-meta-parsers.html

**編集:**う一つのカラムが正常に動作して、このカラムは依然とします。ものでは桁の数字とカンマで区切seperated桁?

役に立ちましたか?

解決

この質問に出くわす誰のため。私は私のヘッダー行にクラスを追加する必要がありました。だから私は空想ソートしたかった任意のヘッダのために、私はこのクラスを追加しました:

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

これはいい仕事作らデフォルトでソーターオンます。

何が私の方法で私の誤差がそうのようなデバッガをオンにして実感しました。

$("#tblInfo").tablesorter({debug:true, widgets: ['zebra'], widgetZebra: { css: ['d0', 'd1']} });

他のヒント

あなたは、メタデータプラグインを含めることを忘れた場合

このも発生することがあります。

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

ここで私が何をやったか:

$(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/equci5する

私は私のために働いた解決策を見つけました。 次のようにtablesorter.jsにおいて、 formatFloat()の機能を変更します。

this.formatFloat = function (s) {
            var i = parseFloat(s.replace(/[,]/g, ''));
            return (isNaN(i)) ? 0 : i;
        };

これは、ソートに干渉されたカンマを置き換えます。 ここの答えを見つけました。 ...!

この情報がお役に立てば幸い
ジャレッドが述べたように、

、あなたは列のインデックスがわからない場合、あなたは私たちがこれを使用してそれを見つけることができ、そのパーサを使用する列を指定する必要があります:

var fancyIndex = $('th.fancyColumn').prevAll().length
var headers = {};
headers[fancyIndex] = {sorter:'fancyNumber'}

$("table").tablesorter({headers:headers})

私は、この正規表現を試して:/(\ dは{1,3})(\ \ D {3})* /

パーサのみ使用するパーサを検出するために、第1 TBODY行を見てください。私はあなたの最初の行は、その中の任意のカンマを持っていない推測しています。私は同じ問題に遭遇し、そして最終的にはちょうどクラスを使用して、私が望んでいたパーサを余儀なく=「{ソーター: 『fancyNumber』}」

あなたはそれがない理由は、プラグインのバグが原因で、パーサが作業する必要があることを完全に正しいです。要するにプラグインが、それは正しくでカンマで数値を並べ替えることができると考え、そのため使用していますそのソーターに建てられたが、その後、それらを正しくソートするために失敗します。

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

まず、あなたは(あなたが上記で示唆したように)(またはプラグインの初期化にJavaScriptでのどちらか)あなたのソート機能の使用を強制することができます。

第二に、あなたがあなた自身に優先して、あなたの関数を使用するプラグインを編集することができ、これはプラグインのライン220上のforループの方向を逆にすることによって達成することができます。

第三に、あなたがコンマ(プラグインのライン861)を受け入れるか、またはカンマ(プラグインのライン852)を処理するために、デフォルトの番号ソーターを変更することではないかのいずれかの数字検出機能を変更することで、壊れデフォルトのソート動作を修正することができます。

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

私は私のために働いた解決策を見つけました。次のようにtablesorter.jsにおいて、formatFloat()関数を修正する

this.formatFloat = function (s) {
            s = s.toString();
            var i = parseFloat(s.replace(/[,]/g, ''));
            return (isNaN(i)) ? 0 : i;
        };

これは、ソートに干渉されたカンマを置き換えます。ここで答えを見つけました。 ...!

この情報がお役に立てば幸い
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top