日期:2014-05-16  浏览次数:20362 次

金额格式化
一个文本框,输入金额后要转换成标准格式,例如10000.89,格式化之后就变成10,000.89,而且不允许输入多个小数点

------解决方案--------------------
<script type= "text/javascript ">
function wc(n) {
var l, c, r, s = n.toString(), p = /^(\d{1,2})?((?:\d{3})*)(?:(\.)(\d{1,2})\d*)?$/;
if (p.test(s)) {
l = RegExp.$1, r = RegExp.$3 + RegExp.$4, c = RegExp.$2.match(/\d{3}/g);
return l + (c && l ? ", " : " ") + (c ? c.join( ", ") : " ") + r;
} else return null;
}
alert(wc(10000))
</script>
------解决方案--------------------
<input type= "text " onchange= "aa(this.value) " />
<script language= "javascript ">
function aa(inputtext)
{
var text = inputobj.value;
var re = /(^-?(?:(?:\d{0,3}(?:,\d{3})*)|\d*))(\.\d+)?$/; //验证财务数字是否合法 $1为整数部分 $2为带小数点的小数部分
tempstr = text.replace(/,/g, " ");//去除所有 ", "号
var tempint = 0;
var tempstr = " ";
if(re.test(text))
{
tempint = parseInt(RegExp.$1);//把整数部分转换成数字
if(!isNaN(tempint))//判断整数部分是否是数字 或 绝对值是否大于1亿
{
//我也很无奈javascript的小数处理有问题 0.155 * 100 它等于 15.49999999 郁闷
var tempint1 = 0;
var tempint2 = 0;
if(RegExp.$2.length> 3)
{
tempint1 = parseInt(RegExp.$2.charAt(3));
tempint2 = parseInt(RegExp.$2.substr(1,2));
if(tempint1> 4)tempint2++;
if(tempint2> 100)
{
tempint++;
tempint2 = 0;
}
}
if(Math.abs(tempint) <100000000)
{
//循环 以千位为基础 加 ", "号
while(tempint> 1000)
{
tempstr = ", " + (tempint % 1000) + tempstr;
tempint = Math.floor(tempint/1000);
}
tempstr = " " + tempint + tempstr + ". " + tempint2;//加上小数位
inputobj.value = tempstr;//把成功的结果写回input里面
}
else
{
alert( "数值过大 ");
}
}
else
{
alert( "数字不合法 ");
}
}
else
{
alert( "数字不合法 ");
}
}
</script>
------解决方案--------------------
http://hi.baidu.com/lael80/blog/item/d0bd46df1941d31248540363.html

javascript格式化数字,如 8888.85745 格式化成 8,888.86