当使用toLocaleString时,即使它输出一个带有$和逗号分隔数千个值的值,它也会在那里没有逗号或$的纯数字。我试图在把它放入之前将它们从价值中剥离出来,它似乎适用于' $'但不是','。
有人可以告诉我我做错了吗?
$("#bob").blur(function() {
NumberStripped = ($("#bob").val()).replace(',', '');
NumberStripped = ($("#bob").val()).replace('$', '');
console.log(NumberStripped);
CurrencyValue = Number(NumberStripped).toLocaleString('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 2,
maximumFractionDigits: 2
});
$('#bob').val(CurrencyValue);
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" name="CurrencyTest" id="bob" maxlength="15">
&#13;
要复制它,您基本上可以键入123456,单击关闭,然后单击并单击关闭。
其他一些帖子建议我用它来替换逗号:
NumberStripped = ($("#bob").val()).replace(/,/g, '');
我不确定那是做什么但它仍然无效。
要复制它,您基本上可以键入123456,单击关闭,然后单击并单击关闭。
答案 0 :(得分:2)
问题是因为您只使用了第二次replace()
调用的结果 - 您不使用在第一次替换后创建的值来删除,
字符。
话虽如此,您可以通过发出单个replace()
调用来查找任何不是数字或.
的字符并将其删除,从而改进逻辑。然后格式化功能将正常工作。试试这个:
$("#bob").blur(function() {
var numberStripped = $("#bob").val().replace(/[^\d.]/g, '');
var currencyValue = parseFloat(numberStripped).toLocaleString('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 2,
maximumFractionDigits: 2
});
$('#bob').val(currencyValue);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" name="CurrencyTest" id="bob" maxlength="15">
答案 1 :(得分:0)
使用您提供的代码,我在这里工作:
https://jsfiddle.net/3ntbvq05/42/
NumberStripped = ($("#bob").val()).replace(/,/g, '');
您的NumberStripped
变量被替换逗号后面的美元符号的部分覆盖。小心。
---编辑&gt;&gt; jsFiddle也处理美元:https://jsfiddle.net/3ntbvq05/43/
答案 2 :(得分:0)
其中一种方法是使用.split(',').join('')
。这是一个例子:
$("#bob").blur(function() {
var replaced;
replaced = ($("#bob").val()).split(',').join('').split('$').join('');
console.log(replaced);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" name="CurrencyTest" id="bob" maxlength="15">
答案 3 :(得分:0)
删除多个不同字符的另一种方法是:
.replace(/[,$]/g,'')
方括号表示“匹配任何这些字符”,在本例中为,
和$
。 g
使其成为全局替换 - 如果没有,则只删除第一个匹配的实例。
$("#bob").blur(function() {
var replaced = Number(
$("#bob")
.val()
.replace(/[,$]/g,'')
).toLocaleString('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 2,
maximumFractionDigits: 2
}
)
$('#bob').val(replaced);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" name="CurrencyTest" id="bob" maxlength="15">