在格式化为货币的单元格上的sumtr

时间:2013-04-07 21:53:12

标签: jquery

我使用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函数删除除NUM以外的任何函数,但不会返回任何内容。

这是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>

1 个答案:

答案 0 :(得分: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);