无法删除逗号"替换"在javascript中

时间:2017-10-03 16:20:42

标签: javascript jquery

当使用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;
&#13;
&#13;

要复制它,您基本上可以键入123456,单击关闭,然后单击并单击关闭。

其他一些帖子建议我用它来替换逗号:

NumberStripped = ($("#bob").val()).replace(/,/g, '');

我不确定那是做什么但它仍然无效。

要复制它,您基本上可以键入123456,单击关闭,然后单击并单击关闭。

4 个答案:

答案 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">