jQueryテーブルソーターを使用してmm / yy日付をソートする
-
19-08-2019 - |
質問
jquery tablesorterプラグインを使用してテーブルをソートしています。表の列には、日付がmm / yy形式で表示されます。
<tr>
<td class="col-name">...</td>
...
<td rel="2000" class="col-dob">10/00</td>
...
</tr>
<tr>
<td class="col-name">...</td>
...
<td rel="1986" class="col-dob">11/86</td>
...
</tr>
注:
- 各セルには一意のクラスがあります
- 日付はmm / yy形式で表示されます
- 日付のあるセルも年を受け取ります
私のjQueryコードは次のとおりです。
// add parser through the tablesorter addParser method
$.tablesorter.addParser({
// set a unique id
id: 'user-birthdate',
is: function(s) {
// return false so this parser is not auto detected
return false;
},
format: function(s) {
// format your data for normalization
var dateSplit = s.split('/');
if(2 !== dateSplit.length)
return 0;
return new Date(dateSplit[1], dateSplit[0], 1);
},
// set type, either numeric or text
type: 'numeric'
});
myClass.init = function() {
$('.module .user table').tablesorter({
sortList: [[0,0]],
widgets: ['zebra'],
headers: {
5: {
sorter:'user-birthdate'
}
}
});
}
myClass.init();
私の問題は、tableSorterが00を2000ではなく1900年と解釈するため、ソートされたデータが正しくないことです。
どのようにこれを解決できますか? jQuery 1.2.6と最新バージョンのtablesorterを使用しています。
解決
tablesorterのドキュメントは、しばしば役に立たないことがわかりました。それは多くのことを言っているように見えますが 、詳細に欠けています。
この場合、パーサーの関数シグネチャはわかりません。幸いなことに、縮小されていないコードを読んで見つけることができます。
metadata
パーサーがこれを行うことがわかります:
format: function(s,table,cell) {
これは、フォーマット方法を次のように調整できることを意味します。
format: function(s, table, cell) {
// format your data for normalization
var dateSplit = s.split('/');
var year = $(cell).attr('rel');
if(2 !== dateSplit.length)
return 0;
return new Date(year, dateSplit[0], 1);
},
または少なくともそれに似ています。私は実際にこれをテストしていません。しかし、少なくとも非常に近いはずです。
他のヒント
あなたの問題は、日付のコンストラクタと、曖昧さを排除せずに渡す2桁の年の文字列であることがわかると思います。new Date(dateSplit[1], dateSplit[0], 1);
パーサーのsに基づいてrelへのアクセスを(簡単に)取得できるとは思わない。にはセルの内容全体が含まれていますか?次のようなセルのデータで何かを行うことができます:<span style="display : none">CC</span>MM/YY
、タグを取り除き、解析でCCとYYを組み合わせますか?
所属していません StackOverflow