我在这里和其他地方浏览了无数线程超过 2 天,但我无法让它正常工作。
我有一个计算器完全按照我需要的方式工作,但是,我似乎无法完成最后一件事。千位逗号分隔符和小数点。
我有小数位,但不能添加逗号。当我添加逗号时,我可以在计算中断或值显示为 NaN 之前让一个或两个字段工作。
这是工作页面:http ://codepen.io/anon/pen/Fauzy
它目前使用这个:
function FormatAsMoney(mnt) {
mnt -= 0;
mnt = (Math.round(mnt*100))/100;
return (mnt == Math.floor(mnt)) ? mnt + '.00'
: ( (mnt*10 == Math.floor(mnt*10)) ?
mnt + '0' : mnt);
}
如果我尝试使用它:
function FormatAsMoney(x)
{
var money_value;
mnt = x.value;
mnt = mnt.replace(/\,/g,'');
mnt -= 0;
mnt = (Math.round(mnt*100))/100;
money_value = (mnt == Math.floor(mnt)) ? mnt + '.00' : ( (mnt*10 == Math.floor(mnt*10)) ? mnt + '0' : mnt);
if (isNaN(money_value))
{
money_value ="0.00";
}else{
money_value = CommaFormatted(money_value);
x.value = money_value.replace(".00", "");
}
}
它根本不起作用。
我使用以下方法进行了另一项测试:
function FormatAsMoney(str) {
return (str + "").replace(/\b(\d+)((\.\d+)*)\b/g, function(a, b, c) {
return (b.charAt(0) > 0 && !(c || ".").lastIndexOf(".") ? b.replace(/(\d)(?=(\d{3})+$)/g, "$1,") : b) + c;
});
}
其中我在第一个字段上获得了逗号格式,但丢失了小数并且它不会继续任何其他计算。
作为另一个示例,我创建了另一个函数来添加逗号,例如:
function addCommas(nStr){
nStr += '';
c = nStr.split(','); // Split the result on commas
nStr = c.join(''); // Make it back to a string without the commas
x = nStr.split('.');
x1 = x[0];
x2 = x.length > 1 ? '.' + x[1] : '';
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
return x1 + x2;
}
然后我像这样使用它:
document.Rate.RATE.value=addCommas(FormatAsMoney(dasum));
这似乎是我迄今为止最好的结果,但是在第 (163) 行,例如, function dosum()
取决于许多 if 语句,它打破了再次。我似乎无法让它适用于价值为数千的所有适用领域。
我需要能够在前 2000 万美元“20000000”中输入“保险金额”(作为示例,因为它将填充几乎所有可能的字段,这些字段将具有逗号分隔值和小数点)
谁能结束我的痛苦?谢谢你的帮助。