2013-04-07 97 views
1

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

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

如果我删除readValue上方,然后代码工作正常,但合计起来是没有货币符号列;我正在使用formatCurrency()方法显示用货币符号格式化的总数。
但是,如果列(带有“总和”类)已用货币格式化,则sumtr不适用于这些值。所以我试图让readValue函数去掉除了Numbers之外的任何东西,但是没有返回。

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

如果你正在使用e.data('val'),它意味着你有关于这一点我不认为你已经完成了TD设置SOEM数据瓦尔斯?

所以,你既可以解析HTML TD像这样:

$('#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);