<script language="JavaScript">
function toFormant(obj)
{
var numstr = obj.value;
var num = numstr.replace(/,/g,"");
var a = new Array();
if(num.length>3)
{
for(i=num.length;i>0;i=i-3)
{
a.push(num.substring(i-3,i));
}
obj.value=a.reverse().join(",");
}

}
  </script>
 <body>
  <input type="text" id="txt1" value="" onkeyup="toFormant(this)"/>
 </body>  我写了上面的方法不知道是否符合你的要求

解决方案 »

  1.   

    哦,对不起 上面的代码有一个bug 当输入的字符很长,然后又删除到长度小于3的时候,逗号不会消除
    改了下
    function toFormant(obj)
    {
    var numstr = obj.value;
    var num = numstr.replace(/,/g,"");
    var a = new Array();
    if(num.length>3)
    {
    for(i=num.length;i>0;i=i-3)
    {
    a.push(num.substring(i-3,i));
    }
    obj.value=a.reverse().join(",");
    }
    else
    {
    obj.value = numstr.replace(/,/g,"");
    }
    }
      

  2.   


    <script language="javascript">
            function show(obj)
            {
                obj.value=obj.value.replace(/,/g,"")
                if(/^[1-9]\d*$/.test(obj.value))
                obj.value = obj.value.replace(/(?=(?!\b)(?:\d{3})+(?!\d))/g,',');
            }
    </script>
    <input name="haha" onblur="show(this)">
      

  3.   

    楼上的果然是高人
    PF~~PF~~不过如果输入非数字就没用了
    可以将
    obj.value=obj.value.replace(/,/g,"")
    改为
    obj.value=obj.value.replace(/[^0-9]/g,"")
    限制只能输入数字就完美了]
      

  4.   


      <script language="JavaScript">
    function toFormant(obj)
    {

    var numstr = obj.value;
    var num =numstr.replace(/,| /g,"");
    if(num.length>1)
    {
    num = num.replace(/\b[0*]/g,"");
    }
    if(!num.match(/[^0-9]/g))
    {
    //alert(num);
    var a = new Array();
    if(num.length>3)
    {
    for(i=num.length;i>0;i=i-3)
    {
    a.push(num.substring(i-3,i));
    }
    obj.value=a.reverse().join(",");
    }
    else
    {
    obj.value = num.replace(/,/g,"");
    }
    }
    else
    {
    alert("NOT A No.");
    }
    }
      </script>写完后,发现上面的代码有问题,再发一份,希望这次不会漏掉什么