2016-10-27 4 views
0

私はすでに​​3210またはCustom sort durations using jQuery DataTablesのように私の質問に対する答えを探しましたが、私の問題に合ったものを見つけることができませんでした。したがって、私はここにいる。jqueryデータテーブルで長い持続時間をソート

現在のプロジェクトにテーブルを表示するには、jquery Datables:https://datatables.net/を使用しています。

99:39:25  
322:48:43 
274:01:21 
33:10:39 

私はそれらを整理したい、結果は正しくありません:私のような期間を含む列を持つ表を得た私は、ソートのプラグインのドキュメントに見えた

99:39:25 
33:10:39 
322:48:43 
274:01:21 

https://datatables.net/plug-ins/sorting/)しかしそれは役に立たなかった。私はの自然な時間の並べ替えを使用し、毎回上記の結果を得ました。誰に進めるかについてのアイデアはありますか?

これは私が私のHTMLにデータテーブルを初期化するために使用していますものです:

<script> 
$(document).ready(function() { 
$('.dataresults').DataTable({ 
    "iDisplayLength": 25, 
    "searching": true, 
    "pagingType": "simple", 
    "order": [[7, "desc"]], 
    "columnDefs": [{ 
    "type": 'time', "targets": [6,7] 
    }], 
}); 
}); 
</script> 

答えて

0

私はCustom sort durations using jQuery DataTablesに基づいて解決策を見つけました。誰かが私の場合には、解決策を投稿します。

私はこの正規表現に置き換え:このずつ

/(?:(\d+)m)?\s*(?:(\d+)s)?/ 

/(?:(\d+):)?(?:(\d+):)?(?:(\d+):)?/ 

をし、期待どおりにソートされました!

322:48:43 
274:01:21 
99:39:25 
33:10:39 

いっぱいスクリプトは次のようになります。

<script type="text/javascript"> 
$.extend(jQuery.fn.dataTableExt.oSort, { 
"duration-pre": function (s) {   
    var duration;  
    s = s.toLowerCase(); 
    if(s === 'n/a'){ 
     duration = -1;   
    } else {    
     d = s.match(/(?:(\d+):)?(?:(\d+):)?(?:(\d+):)?/); 
     duration = parseInt(d[1] ? d[1] : 0) * 60 + parseInt(d[2] ? d[2] : 0) + parseInt(d[2] ? d[2] : 0)/60; 
    } 
    return duration; 
} 
}); 

$(document).ready(function() { 
$('.dataresults').DataTable({ 
    "iDisplayLength": 25, 
    "searching": true, 
    "pagingType": "simple", 
    "order": [[7, "desc"]], 
    "columnDefs": [{ 
    "type": 'duration', targets: [6,7] 
    }], 
}); 
}); 
</script> 
関連する問題