我在一个表中有一系列输入框,其中包含一些动态生成的行,例如:
<table id="someDataTable">
<tbody>
<tr>
<td >Some Title</td>
<td >Units</td>
<td >Val/Unit</td>
<td >Value</td>
</tr>
<tr>
<td><input type="text" size="30" /></td>
<td><input type="text" size="14" class="units commas"/></td>
<td><input type="text" size="14" class="value commas"/></td>
<td><input type="text" size="14" readonly="readonly" class="autoTotal"/></td>
</tr>
...
</tbody>
</table>
现在,我有一个 blur() 调用来添加逗号,每次退出输入框以使用漂亮的Number Formatter插件添加逗号,它只是这样做:
<script>
$(".commas").blur(function () {
$(this).parseNumber({ format: "#,###", locale: "us" });
$(this).formatNumber({ format: "#,###", locale: "us" });
});
</script>
而且效果很好。现在,另一方面,我还有一段代码可以在每次击键时自动进行表单数学运算。它在 initialize() 中有一个调用,如下所示:
$(document).on('keyup', '#someDataTable', DoCalculations);
它调用的函数如下所示:
function DoCalculations() {
$(this).find('tr').each(function () {
var tUnits = $(this).find('.units').val();
var tValue = $(this).find('.value').val();
$(this).find('.autoTotal').val(Math.round(tUnits * tValue));
});
}
--
现在,我的问题是:我需要能够去掉逗号来进行计算。我希望能够使用 NumberFormatter 的 parseNumber() 函数来做到这一点,但它的适合度很小。这是 DoCalculations 中尝试完成此操作的替代代码:
function DoCalculations() {
$(this).find('tr').each(function () {
var tTotal;
var tUnits = $(this).find('.units').val();
var tValue = $(this).find('.value').val();
tUnits = $.parseNumber(tUnits, { format: "#,###", locale: "us" });
tValue = $.parseNumber(tValue, { format: "#,###", locale: "us" });
tTotal = tUnits * tValue;
tTotal = $.formatNumber(tTotal, { format: "#,###", locale: "us" });
$(this).find('.autoTotal').val(tTotal);
});
}
但它在 NumberFormatter.js 中返回运行时错误,它无法获取未定义或空引用的 numberString.indexOf 属性。确切地说是第 442 行。我不确定为什么。我原本以为是因为有空的输入框,但结果并不重要。
归根结底,我需要去掉逗号。