1

我正在使用sumtr来总结一列,但我希望能够从格式化为货币的列中计算总和。

$('#Cart').sumtr({
    readValue: function (e) { return Number(parseFloat(e.data('val'))
                             .replace(/[^0-9\.]+/g, "")); },
    formatValue: function (val) { return formatCurrency(val); }
});

如果我删除readValue上面的代码,那么代码就可以正常工作,它会总计一个没有货币符号的列;我正在使用该formatCurrency()方法来显示用货币符号格式化的总数。
但是,如果列(带有“sum”类)已经用货币格式化,则sumtr不适用于这些值。所以我试图让readValue函数去除除数字之外的任何内容,但没有返回任何内容。

这是 sumtr 正在处理的表的一部分

<tr>
    <td>Adrobupicator</td>
    <td class="currency">&#163;700.01</td>
    <td>1</td>
    <td class="sum currency">700.01</td>
</tr>
<tr>
    <td>A1 Product 2</td>
    <td class="currency">&#163;36.28</td>
    <td>1</td>
    <td class="sum currency">36.28</td>
</tr>
<tfoot>
    <tr class="summary">
        <td colspan="3">Cart Total</td>
        <td class="currency"></td>
    </tr>
</tfoot>
4

1 回答 1

1

如果您正在使用e.data('val'),这意味着您已经在 td 上设置了 soem 数据值,我认为您没有这样做?

所以你可以像这样解析 td html:

$('#myTable').sumtr({
    readValue : function(e) { return parseFloat(e.html().replace(/[^0-9\.]+/g, "")); },
    formatValue : function(val) { return '$' + val; },
});

或者,e.data('val')如果您已设置数据,则可以使用。那么你甚至不需要正则表达式。要么使用数据属性:

<tr>
    <td class="currency" data-val="700.01">&#163;700.01</td>
</tr>

或使用 jQuery 显式设置数据:

$("#yourtd").data("val", 700.01);
于 2013-04-07T22:29:49.410 回答