输入数字时的货币屏蔽和格式

时间:2017-07-21 18:07:59

标签: javascript jquery

这就是我想要做的:

到目前为止,我发现的所有内容都只是在小数点后用两个零点掩盖货币,或者是数千个逗号,我已经知道该怎么做。

我需要能够在用户输入时以货币格式附加数字,以0.00为起点。我需要对几个输入做这个。我想我需要跟踪用户为每个输入输入的所有数字。我甚至不确定如何最好地接近这一点。我怎么能这样做?

我把一些东西放在一起作为我的例子,但它非常准确。

<Image />

https://jsfiddle.net/apxh4eL2/1/

2 个答案:

答案 0 :(得分:3)

感谢Jitendra Softgrid在评论中回答了我的问题。我修改了代码以捕获更多条件。以下是我使用的最终版本。我希望这有助于其他人。

$(document).on('input',':input',function() {
  var v = this.value, dollar = '0', cents = '00';
  if (v.indexOf('.') !== -1) {
    var price = v.split('.');
    dollar = price[0] || '0';
    cents = price[1] || '00';
  }
  if (cents.length === 1) {
    if (dollar) {
      var dollarNumbers = dollar.split('');
      var dollarLength = dollarNumbers.length;
      cents = dollarNumbers[dollarLength-1]+cents;
      dollar = '';
      for (var i = 0; i < dollarLength-1 ; i++) {
        dollar += dollarNumbers[i];
      }
      if (!dollar) {dollar = '0';}
    }
  }
  if (v.length === 1) {
    cents = '0'+v;
  }
  if (cents.length === 3) {
    var centNumbers = cents.split('');
    dollar = dollar === '0' ? centNumbers[0] : dollar+centNumbers[0];
    cents = centNumbers[1]+centNumbers[2];
  }
  this.value = dollar+'.'+cents;
});

https://jsfiddle.net/apxh4eL2/4/

2019编辑:

过了一会儿,我想出了一个更清洁的解决方案。

$(document).on('input',':input',function(event) {
  this.value = parseFloat(this.value.replace(/(.*){1}/, '0$1').replace(/[^\d]/g, '').replace(/(\d\d?)$/, '.$1')).toFixed(2);
});

演示:https://jsfiddle.net/apxh4eL2/9/

答案 1 :(得分:0)

尝试探索JqueryMask插件,它有很多掩盖选项 - https://igorescobar.github.io/jQuery-Mask-Plugin/