gpt4 book ai didi

jquery - 使用 datatables.js 对格式为 #,###,###.## 的数字进行排序

转载 作者:行者123 更新时间:2023-12-01 06:48:03 25 4
gpt4 key购买 nike

在我的国家,表达数字的惯例是使用 .作为千位分隔符, , 作为小数分隔符。例如:25.367,212 我无法使 datatables.js 对使用此格式的任何列进行排序。

我正在使用以下扩展:

//formatted number sort
jQuery.extend(jQuery.fn.dataTableExt.oSort, {
"formatted-num-pre": function (a) {
a = (a === "-" || a === "") ? 0 : a.replace(/[^\d\-\.]/g, "");
return parseFloat(a);
},

"formatted-num-asc": function (a, b) {
return a - b;
},

"formatted-num-desc": function (a, b) {
return b - a;
}
});

//formatted number autodetection
jQuery.fn.dataTableExt.aTypes.unshift(
function (sData) {
var deformatted = sData.replace(/[^\d\-\.\/a-zA-Z]/g, '');
if ($.isNumeric(deformatted) || deformatted === "-") {
return 'formatted-num';
}
return null;
}
);

我搜索了数据表文档和论坛,但没有找到解决方案。有什么建议么?我正在使用 jquery 1.9.1 和 datatables 1.9.4

最佳答案

我最终通过以下方式解决了这个问题:

jQuery.fn.dataTableExt.oSort['numeric-comma-asc'] = function (a, b) {
//remove the dots (.) from the string and then replaces the comma with a dot
var x = (a == "-") ? 0 : a.replace(/\./g, "").replace(/,/, ".");
var y = (b == "-") ? 0 : b.replace(/\./g, "").replace(/,/, ".");
x = parseFloat(x);
y = parseFloat(y);
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
};

jQuery.fn.dataTableExt.oSort['numeric-comma-desc'] = function (a, b) {
var x = (a == "-") ? 0 : a.replace(/\./g, "").replace(/,/, ".");
var y = (b == "-") ? 0 : b.replace(/\./g, "").replace(/,/, ".");
x = parseFloat(x);
y = parseFloat(y);
return ((x < y) ? 1 : ((x > y) ? -1 : 0));
};

//numeric comma autodetect
jQuery.fn.dataTableExt.aTypes.unshift(
function (sData) {
//include the dot in the sValidChars string (don't place it in the last position)
var sValidChars = "0123456789-.,";
var Char;
var bDecimal = false;

/* Check the numeric part */
for (i = 0 ; 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-comma';
}
);

关于jquery - 使用 datatables.js 对格式为 #,###,###.## 的数字进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20336091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com