<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>数字划位-caiying2009</title>
</head><body>
<input onkeyup="checkValue(this)" ><input id="inf" alt="测试用"><!--input id="inf" type=hidden alt="实际“入库”用"-->
<script language="javascript">
<!--
function checkValue(obj){
var v=obj.value.replace(/,/ig,"");//去掉可能的“,”
var vs=v.indexOf(".")
if (vs==-1){//整数
obj.value=test(parseInt(v).toString())
}
else{//小数
obj.value=test(parseInt(v.substring(0,vs)).toString())+"."
if (v.substring(vs+1,v.length).length>0)
obj.value+=test2(parseInt(v.substring(vs+1,v.length)).toString())//小数划位
// obj.value+=parseInt(v.substring(vs+1,v.length))//小数不划位
}
obj.onblur=function(){document.getElementById("inf").value=parseFloat(v);}
}function test2(s){//小数划位
var vr=s
var Va=s.split("")
if (Va.length>=3){
for (var i=0;i<Va.length;i++)
if (i%3==0 && i!=0)Va[i]=","+Va[i];
vr=Va.join("")
}
return vr
}function test(s){//整数划位
var vr=s
var Va=s.split("")
var Vp=Va.length%3
if (Va.length>=3){
for (var i=0;i<Va.length;i++)
if (i%3==Vp && i!=0)Va[i]=","+Va[i];
vr=Va.join("")
}
return vr
}
//-->
</script>
</body></html>

解决方案 »

  1.   

    MS国外的货币显示?
    你要的是输入的时候自动分割,入到库中还是没有逗号?用onkeyup事件把当前输入框中的数字处理?到服务器端把逗号replace成空格
      

  2.   

    数据库字段如果是decimal 则只能保存数字和.保存不了空格和其他的
    只有在显示的时候通过程序控制进行显示成指定的格式
      

  3.   

    string.Format("{0:N}", 250000)
    ----
    250,000.00
      

  4.   


    可以实现,但是数据输入要过滤一下吧,比如输入字母或汉字特殊字符时,调用parseInt(v).toString()或parseFloat(v)则会报NaN无类型
     
      

  5.   


    测试后有问题, 如果将输入的数字删掉的话已经出现NaN,而且无法重新输入.输入非数字也是, 怎么像rxopt那样说的过滤?
      

  6.   


    <html><head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>数字划位-caiying2009</title>
    </head><body>
    <input onkeyup="checkValue(this)" ><input id="inf" alt="测试用"><!--input id="inf" type=hidden alt="实际“入库”用"-->
    <script language="javascript">
    <!--
    function checkValue(obj){
    var v=obj.value.replace(/,/ig,"");//去掉可能的“,”
        if(isNaN(v)){
            obj.value=obj.value.substr(0,obj.value.length-1)
            obj.focus()
            return false;
        }
    var vs=v.indexOf(".")
    if (vs==-1){//整数
    obj.value=test(parseInt(v).toString())
    }
    else{//小数
    obj.value=test(parseInt(v.substring(0,vs)).toString())+"."
    if (v.substring(vs+1,v.length).length>0)
    obj.value+=test2(parseInt(v.substring(vs+1,v.length)).toString())//小数划位
    // obj.value+=parseInt(v.substring(vs+1,v.length))//小数不划位
    }
    obj.onblur=function(){document.getElementById("inf").value=parseFloat(v);}
    }function test2(s){//小数划位
    var vr=s
    var Va=s.split("")
    if (Va.length>=3){
    for (var i=0;i<Va.length;i++)
    if (i%3==0 && i!=0)Va[i]=","+Va[i];
    vr=Va.join("")
    }
    return vr
    }function test(s){//整数划位
    var vr=s
    var Va=s.split("")
    var Vp=Va.length%3
    if (Va.length>=3){
    for (var i=0;i<Va.length;i++)
    if (i%3==Vp && i!=0)Va[i]=","+Va[i];
    vr=Va.join("")
    }
    return vr
    }
    //-->
    </script>
    </body></html>
      

  7.   

    谢谢caiying, 但是测试后依然有问题,输入数字,按退格键,删掉最后一个数字,就又会出现NaN。还有一种情况是如果用户粘过来的数字,如何将其格式化呢?
      

  8.   

    <html><head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>数字划位-caiying2009</title>
    </head><body>
    <input onkeyup="checkValue(this)" onblur="checkValue(this)" ><input id="inf" alt="测试用">
    <script language="javascript">
    <!--
    function checkValue(obj){
        var v=obj.value.replace(/,/ig,"");//去掉可能的“,”
    if(isNaN(v)){
        obj.value=obj.value.substr(0,obj.value.length-1)
        obj.focus()
        return false;
    }
        if (v.length>=3) {
        var vs=v.indexOf(".")
        if (vs==-1){//整数
            obj.value=test(parseInt(v).toString())
        }
        else{//小数
            obj.value=test(parseInt(v.substring(0,vs)).toString())+"."
            if (v.substring(vs+1,v.length).length>0)
            obj.value+=test2(parseInt(v.substring(vs+1,v.length)).toString())//小数划位
    //        obj.value+=parseInt(v.substring(vs+1,v.length))//小数不划位
        }
        }
    document.getElementById("inf").value=parseFloat(v)?parseFloat(v):v;
    }function test2(s){//小数划位
        var vr=s
        var Va=s.split("")
        if (Va.length>=3){
            for (var i=0;i<Va.length;i++)
                if (i%3==0 && i!=0)Va[i]=","+Va[i];
            vr=Va.join("")
        }
        return vr
    }function test(s){//整数划位
        var vr=s
        var Va=s.split("")
        var Vp=Va.length%3
        if (Va.length>=3){
            for (var i=0;i<Va.length;i++)
                if (i%3==Vp && i!=0)Va[i]=","+Va[i];
            vr=Va.join("")
        }
        return vr
    }
    //-->
    </script>
    </body></html>