带逗号和小数的Jquery掩码编号

带逗号和小数的Jquery掩码编号,jquery,jquery-mask,Jquery,Jquery Mask,我正在使用Jquery掩码插件来格式化我网站上的许多内容,我正试图找出如何让它以我需要的方式格式化数字。我正在使用以下插件 我正在尝试为我的数字获取以下格式 999,999,999.99 数字是一个货币字段,需要每三位数字加一个逗号,其值可以低至0.00请在他们的网站上尝试使用逗号和点反转的掩码: $('.money').mask('000.000.000.000.000,00', {reverse: true}); 拥有 $('.money').mask('000,000,000,000

我正在使用Jquery掩码插件来格式化我网站上的许多内容,我正试图找出如何让它以我需要的方式格式化数字。我正在使用以下插件

我正在尝试为我的数字获取以下格式

999,999,999.99

数字是一个货币字段,需要每三位数字加一个逗号,其值可以低至
0.00

请在他们的网站上尝试使用逗号和点反转的掩码:

$('.money').mask('000.000.000.000.000,00', {reverse: true});
拥有

$('.money').mask('000,000,000,000,000.00', {reverse: true});

嗯,这很有效。我刚刚调整了网站上用逗号改变点的例子,效果很好

$('.money').mask(“#,###0.00”,{reverse:true})

我创建了一个没有反转但仍然可以正常工作的面具

这个想法是在每次按键盘时都要动态地更换面具。 以下是一个解决方案:


var curCharLenght=0;
变量浮动选项={
onKeyPress:功能(cur、e、currentField、floatOptions){
var mask=createMask(cur);
变量字段=当前字段
.parent()
.find(“.input float[data field=“+currentField.attr”(“数据字段”)+”]);
if(cur.length-curCharLenght<0&&cur.indexOf(“.”)=-1){
字段掩码(掩码+“000”,浮动选项);
curCharLenght=cur.length;
}else if(event.data==”,“| | event.data==”){
curCharLenght=mask.length+1;
掩码+=“.0000”;
字段.mask(mask,floatOptions);
}否则{
如果(当前索引(“.”)=-1){
掩码=掩码+“000.0000”;
字段.mask(mask,floatOptions);
if(isNaN(e.originalEvent.data)| | e.originalEvent.data==“”){
val(field.val().slice(0,-1));
}
}
curCharLenght=cur.length;
}
}
};
函数createMask(val){
var mask=“”;
var num=val.split(“.”[0];
num=num.replace(//g,“”);
对于(变量i=1;i 1&&splitedVal[1]。长度>2){
if(splitedVal[1]。长度==3){
掩码+=“.000”;
}否则{
掩码+=“.0000”;
}
}否则{
遮罩+=“.00”;
}
}
项目.掩码(掩码、浮动选项);
});

您尝试过什么?我可以在你链接的页面中看到几个例子,其中一些似乎完全符合你的要求:-?谢谢你,我没有使用{reverse:true}来尝试它;一旦我添加了它,一切都很好。@AdrianoResende,这应该行得通。只需确保保留关于如何使十进制值可选的
{reverse:true}
?问题是当您有更多的资金投入时。。它再次应用了掩码,有解决方案吗?@guilieen那么你必须使用另一个选择器。不要使用
.money
,而是在您实际需要的输入位置使用id。如何添加美元前缀?e、 g$5.00css.money:在{content:'$';}之前
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.10/jquery.mask.js"></script>

<input type="text" class="input-float" placeholder="00.00" value="" />

<script>
    var curCharLenght = 0;
    var floatOptions = {
      onKeyPress: function(cur, e, currentField, floatOptions) {
        var mask = createMask(cur);
        var field = currentField
          .parent()
          .find(".input-float[data-field=" + currentField.attr("data-field") + "]");
        if (cur.length - curCharLenght < 0 && cur.indexOf(".") == -1) {
          field.mask(mask + " 000", floatOptions);
          curCharLenght = cur.length;
        } else if (event.data == "," || event.data == ".") {
          curCharLenght = mask.length + 1;
          mask += ".0000";
          field.mask(mask, floatOptions);
        } else {
          if (cur.indexOf(".") == -1) {
            mask = mask + " 000.0000";
            field.mask(mask, floatOptions);
            if (isNaN(e.originalEvent.data) || e.originalEvent.data == " ") {
              field.val(field.val().slice(0, -1));
            }
          }
          curCharLenght = cur.length;
        }
      }
    };

    function createMask(val) {
      var mask = "";
      var num = val.split(".")[0];
      num = num.replace(/ /g, "");
      for (var i = 1; i <= num.length; i++) {
        mask += "0";
        if ((num.length - i) % 3 === 0 && i != num.length) {
          mask += " ";
        }
      }
      return mask;
    }

    $(".input-float").each(function(index, el) {
      var item = $(this);
      item.attr("data-field", "field-" + index);

      var mask = createMask(item.val());
      if (item.val().indexOf(".") !== -1) {
        var splitedVal = item.val().split(".");
        if (splitedVal.length > 1 && splitedVal[1].length > 2) {
          if (splitedVal[1].length == 3) {
            mask += ".000";
          } else {
            mask += ".0000";
          }
        } else {
          mask += ".00";
        }
      }

      item.mask(mask, floatOptions);
    });
</script>