不计算格式化数值的函数

问题描述:

我构建了一个计算器,它接受用户输入(1个文本字段,2个选择下拉列表),然后在满足所需条件时显示下面的输出。我也想有文本输入字段显示千个分隔符(逗号)动态地在多个用户类型,我取得了使用此:不计算格式化数值的函数

$('#orderAmt').keyup(function(event) { 
    // skip for arrow keys 
    if (event.which >= 37 && event.which <= 40) return; 
    // format number 
    $(this).val(function(index, value) { 
    return value 
     .replace(/\D/g, "") 
     .replace(/\B(?=(\d{3})+(?!\d))/g, ",") 
    }); 
}); 

现在,正如所料,计算器功能不承认任何这些值因为它们已被转换为字符串。我认为,下一步是使用类似parseInt函数,所以我在.keyup函数的末尾添加一行:

var converted = parseInt($('#orderAmt'), 10); 

但我失去了对下一步怎么做,因为实际的计算器功能是用vanilla JS编写的,在这里我试图把用户的价值存储在一个新的jQuery变量中。我应该采取更好的方法吗?

这里是我的jsfiddle - https://jsfiddle.net/bkroger7/yk13wzcc/

如果任何人都可以在正确的方向点我将不胜感激。

顺便说一句 - 我已经尝试了臭名昭着的非jQuery addCommas函数,如here,但它不适用于我 - 只有基于jQuery的解决方案一直工作到目前为止。

+0

您必须在调用'parseInt()'之前删除逗号。 – Barmar

您的问题是要添加逗号输入字段,然后以它为IS ...

所以当你使用$('#orderAmt').val()你加逗号后,你会得到3,000代替3000

你需要做的只是删除逗号......

这里是一个工作叉 https://jsfiddle.net/Lw9cvzn0/1/

的NotI cevar orderAmount = $('#orderAmt').val().replace(new RegExp(','), '');

+0

这个伎俩,非常感谢你! –

您错过了致电.val()以获取该字段的值。然后你必须在解析它之前删除逗号。

var converted = parseInt($('#orderAmt').val().replace(/,/g, ''), 10);