所以看起來你有兩個問題。首先,dT並沒有選擇你的自定義排序 - 它只是忽略它並使用標準排序。我可以通過指定的排序爲每列解決這個問題:
$('#table_list').dataTable({
"aoColumns": [null, {"sType": "natural"}, null, null],
"aaSorting": [[ 1, "asc" ]],
"sScrollX": "100%",
});
其次,自然排序不會這些數字你期望的方式進行排序。它會第一號段,直到空間和排序上,像這樣:
2 150 000 €
4 750 000 €
210 000 €
所以你可能只想寫自己的排序。以下是我嘗試的一個示例:
function testSort(a, b) {
var aa = a.replace(/[ \.]/g,''), bb = b.replace(/[ \.]/g,'');
aa = parseInt(aa.substring(0, aa.length - 1));
bb = parseInt(bb.substring(0, bb.length - 1));
return aa == bb ? 0 : (aa < bb ? -1 : 1);
}
關鍵是刪除空格,句點和歐元符號,以便它可以作爲數字讀取。
謝謝您的回答。我試過了http://jsfiddle.net/DzaQe/2/,但它似乎也不起作用。函數naturalSort(a,b)不做這項工作?你可以在這裏看到示例http://www.overset.com/2008/09/01/javascript-natural-sort-algorithm-with-unicode-support/我認爲插件調用「jQuery.fn .dataTableExt.oSort ['natural -...']「並且不確定{」sType「:」natural「}是否也是正確的語法... – Valky 2012-04-24 21:41:36
該頁面上沒有任何示例對具有數千個分隔符的常規數字進行排序。我看着你的小提琴;你需要'返回testSort(a,b);'而不是調用'testSort'然後'return naturalSort(a,b);'。自從您將千位分隔符從「'」更改爲'.'後,我也更新了我的代碼。 – 2012-04-24 22:08:24
在這裏,我分叉你的小提琴:http://jsfiddle.net/v2L4T/1/使用'testSort'爲價格列,'naturalSort'爲其餘。 – 2012-04-24 22:11:57