不计算格式化数值的函数
我构建了一个计算器,它接受用户输入(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的解决方案一直工作到目前为止。
您的问题是要添加逗号输入字段,然后以它为IS ...
所以当你使用$('#orderAmt').val()
你加逗号后,你会得到3,000
代替3000
你需要做的只是删除逗号......
这里是一个工作叉 https://jsfiddle.net/Lw9cvzn0/1/
的NotI ce:var orderAmount = $('#orderAmt').val().replace(new RegExp(','), '');
这个伎俩,非常感谢你! –
您错过了致电.val()
以获取该字段的值。然后你必须在解析它之前删除逗号。
var converted = parseInt($('#orderAmt').val().replace(/,/g, ''), 10);
您必须在调用'parseInt()'之前删除逗号。 – Barmar