javascript - 删除jquery中 'live'输入字段中的逗号

标签 javascript jquery input number-formatting

我在表格中有一系列输入框,其中包含一些动态生成的行,如下所示:

<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 中返回运行时错误,无法获取未定义或 null 引用的 numberString.indexOf 属性。准确地说是第 442 行。我不知道为什么。我本来以为是因为输入框是空的,结果没有关系。

在一天结束时,我需要去掉逗号。

最佳答案

正则表达式擅长删除字符:

var tValue = parseFloat($(this).find('.value').val().replace(/,/g, ''));

更新

如果val()可以为空/未定义,您可以添加如下检查:

var tValue = $(this).find('.value').val();
tValue = tValue ? parseFloat(tValue.replace(/,/g, '')) : 0;

关于javascript - 删除jquery中 'live'输入字段中的逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17112426/

相关文章:

javascript - jQuery Accordion 一次只打开一个选项卡

php - 添加时间(HH :MM) to <li> tags through jquery

jquery - jQtouch 和 jquery 加载覆盖

r - 忽略文本文件标题中的#(R语言)

.net - 将键码转换为相关的显示字符

html - 样式标签和输入标签相同

javascript - grails 中的 CORS - 所有请求都失败了吗?

javascript - 基于 jquery 的独立端口敲门器

javascript - 在 ng-repeat 中使用 ng-list 分割字符串

jquery - Jasmine 2.0 与 Jasmine-Jquery 的兼容性