2

我想将货币符号添加到我的数字中,同时使值在我的引导表中保持可排序(第 30-34 行;表中的第 4 列):

for (var p=0; p<variable_data.length; p++){
    try{
        variable_data[p]["4"] = "$" + Math.round(variable_data[p]["4"])
    } catch(e){ }
}

http://jsfiddle.net/mademoiselletse/s0d1xgzt/

带有“$”的值被排序为字符串而不是数字。我在网上发现的所有货币排序问题都与 DataTable 和 tablesorter() 插件有关。有没有比安装更多 jQuery 插件更快的解决方法?

非常感谢您的帮助!

4

4 回答 4

0

在此处查看自定义示例

您需要发送data-sorter function从字符串中删除 $ 的 a,然后将其作为数字进行比较。

于 2015-06-23T09:35:18.317 回答
0

遇到类似问题,最后从他们的实际网站上查看了自定义排序器示例的源代码:http: //issues.wenzhixin.net.cn/bootstrap-table/#options/custom-sort.html

首先,在定义包含货币/货币/美元值的列时,将排序器的引用添加到您要使用的任何 javascript 函数。这是我的货币列定义的样子:

[
    "field" => "total",
    "title" => "Total",
    "sortable" => true,
    "sorter" => "totalCurrencySort"
]

之后,您将要创建在对该特定列进行排序时执行的 javascript 函数。这里我们定义了 totalCurrencySort,它可以接受 4 个参数,但是只需要前两个。

function totalCurrencySort(a, b, rowA, rowB) {  
    a = +a.substring(1); // remove $
    b = +b.substring(1);
    if (a > b) return 1;
    if (a < b) return -1;
    return 0;
}

为了进行正确的比较,“$”被剥离——根据需要——并且数值计算确定两个值之间的正确排序状态并相应地返回。rowN 参考提供了行的完整数据集,以防您的自定义排序逻辑需要使用行内的其他数据进行更复杂的计算。

于 2018-07-28T17:33:11.000 回答
0

要添加到 Art 和 OptimisticToaster 的答案,我也太陌生了,无法发表评论,所以我对这个问题的看法是:

function totalCurrencySort(a, b, rowA, rowB) {  
    
    a = Number(a.replace(/[^0-9.-]+/g,""));
    b = Number(b.replace(/[^0-9.-]+/g,""));
    
    if (a > b) return 1;
    if (a < b) return -1;
    return 0;
}

我正在使用格式为 1,000.50 英镑的数字,因此剥离任何非数字可以使排序工作在数字使用的任何格式。

于 2020-07-02T10:20:38.703 回答
0

我太新了,无法评论 Art 的帖子,但想为对我有用的内容添加注释。Art 帖子中的 totalCurrencySort 函数对我有用。在表头中,我将属性设置为 data-sorter(而不仅仅是 sorter)。

function totalCurrencySorter(a, b, rowA, rowB) {
a = +a.substring(1);  // remove $
b = +b.substring(1);
if (a > b) return 1;
if (a < b) return -1;
return 0;
}

function totalCurrencyFormatter(data) {
var field = this.field
return '$' + data.map(function (row) {
return +row[field].substring(1)
}).reduce(function (sum, i) {
return sum + i;
}, 0)
}

对于 HTML 表格,我的标题通常是这样的:

<thead>
<tr>
<th data-field="id" data-sortable="true">ID</th>
<th data-field="exp_date" data-sortable="true">Date</th>
<th data-field="amount" data-sortable="true" formatter="totalCurrencyFormatter" data-sorter="totalCurrencySorter">Amount</th>
</tr>
</thead>
于 2019-04-03T02:20:40.237 回答