带逗号和小数的Jquery掩码编号
我正在使用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
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>