我构建了一个计算器,它接受用户输入(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/
如果有人能指出我正确的方向,我们将不胜感激。
BTW - 我已经尝试了臭名昭着的非jQuery addCommas函数,如here所示,但它对我来说不起作用 - 目前只有基于jQuery的解决方案一直在运行。
答案 0 :(得分:1)
你的问题是你是在输入字段中添加逗号然后按原样...
所以当您在添加逗号后使用$('#orderAmt').val()
时,您将获得3,000
而不是3000
你需要做的就是删除逗号......
这是一个工作分叉 https://jsfiddle.net/Lw9cvzn0/1/
通知:var orderAmount = $('#orderAmt').val().replace(new RegExp(','), '');
答案 1 :(得分:1)
您错过了对.val()
的调用以获取字段的值。然后你必须在解析之前删除逗号。
var converted = parseInt($('#orderAmt').val().replace(/,/g, ''), 10);