jQuery Datatablesで数値カンマソートのデフォルトサポートを追加するには?
...sType を使用して列を指定する必要はありません。
jQuery Datatablesで数値カンマソートのデフォルトサポートを追加するには?
...sType を使用して列を指定する必要はありません。
ステップ1:
次のコードで dataTableExt.oSort を拡張します。
$.extend($.fn.dataTableExt.oSort, {
"numeric-pre": function(a) {
a = (a === "-" || a === "") ? 0 : a.replace(/[^\d\-\.]/g, "");
return parseFloat(a);
},
"numeric-asc": function(a, b) {
return a - b;
},
"numeric-desc": function(a, b) {
return b - a;
}
});
ステップ 2: dataTableExt.aTypes を拡張し、カンマを sValidChars 変数に追加します。
# Added comma to sValidChars
$.extend $.fn.dataTableExt.aTypes, [
/*
* Function: -
* Purpose: Check to see if a string is numeric
* Returns: string:'numeric' or null
* Inputs: mixed:sText - string to check
*/
function (sData) {
/* Allow zero length strings as a number */
if (typeof sData === 'number') {
return 'numeric';
}
else if (typeof sData !== 'string') {
return null;
}
var sValidFirstChars = "0123456789-";
var sValidChars = "0123456789.,";
var Char;
var bDecimal = false;
/* Check for a valid first char (no period and allow negatives) */
Char = sData.charAt(0);
if (sValidFirstChars.indexOf(Char) == -1) {
return null;
}
/* Check all the other characters are valid */
for (var i = 1; i < sData.length; i++) {
Char = sData.charAt(i);
if (sValidChars.indexOf(Char) == -1) {
return null;
}
/* Only allowed one decimal place... */
if (Char == ".") {
if (bDecimal) {
return null;
}
bDecimal = true;
}
}
return 'numeric';
},
/*
* Function: -
* Purpose: Check to see if a string is actually a formatted date
* Returns: string:'date' or null
* Inputs: string:sText - string to check
*/
function (sData) {
var iParse = Date.parse(sData);
if ((iParse !== null && !isNaN(iParse)) || (typeof sData === 'string' && sData.length === 0)) {
return 'date';
}
return null;
},
/*
* Function: -
* Purpose: Check to see if a string should be treated as an HTML string
* Returns: string:'html' or null
* Inputs: string:sText - string to check
*/
function (sData) {
if (typeof sData === 'string' && sData.indexOf('<') != -1 && sData.indexOf('>') != -1) {
return 'html';
}
return null;
}
]);
最新の dataTables バージョン (1.10.4) では、フォーマットされた数値の並べ替えを拡張子なしで処理します。つまり、降順で並べ替える場合は前に置き$1,000.00
、昇順で並べ替える場合は前に置きます。$900.00
$900.00
$1,000.00
http://datatables.net/reference/option/columns.typeを参照num-fmt
してください。