<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;
}
</script>

解决方案 »

  1.   

    <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.89"))
    </script>
      

  2.   

    从MSN里找出来的。。郁闷。没想到这个它都能把形式参数改掉。。真是坏啊。
      

  3.   

    <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>
      

  4.   

    <input name="money" onkeyup="wc(document.all.money.value)">,然后把return那里改成
    document.all.money.value=l + (c && l ? "," : "") + (c ? c.join(",") : "") + r;
      

  5.   

    。。看来是我理解错了呢。放到onblur不行么?
      

  6.   

    <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>
      

  7.   

    http://hi.baidu.com/lael80/blog/item/d0bd46df1941d31248540363.htmljavascript格式化数字,如 8888.85745 格式化成 8,888.86