详细内容
必须输入数字的方法,兼容多浏览器
发布日期:2012-06-11     点击:3501     字体:[ ]

如下函数会逐个元素判断是否非数字,然后进行替换,JS函数如下:

    function FormatNumber(obj,precision) {
            //将输入参数转换为字符串形式
            //var strInput = Math.abs(intInput).toString();
            //如果有小数,把小数部分提取出来
            //先剔除非字符字母
            var strInput = obj.value;
            var regExp = /\d/;
            if(strInput.length<=0)
            {
                return "";
            }
            var strXS = "";
            var strZS ="";

            var i=0;
            var strInputTemp="";
            while(i < strInput.length)
            {
              if(strInput[i] != ',')
              strInputTemp += strInput[i];
              i++;
            }
            strInput = strInputTemp;
           
            var j=0;
            var k=0;
            var strZStemp="";
            var strXStemp="";
            if (strInput.indexOf(".", 0) != -1) {
                strXS = strInput.substring(strInput.split(".")[0].length, strInput.length);
                strZS = strInput.split(".")[0];
               
                //替换非数字
                while(j < strZS.length)
                {
                  if(regExp.test(strZS[j]))
                  strZStemp += strZS[j];
                  j++;
                }
               
                while(k < strXS.length)
                {
                  if(regExp.test(strXS[k]))
                  strXStemp += strXS[k];
                  k++;
                }
                strZS = strZStemp;
                strXS = "." + strXStemp; 
            }
            else
            {
                strZS = strInput;
                strXS = ".0";
               
                //替换非数字
                strZStemp = "";
                j=0;
                while(j < strZS.length)
                {
                    if(regExp.test(strZS[j]))
                    strZStemp += strZS[j];
                    j++;
                }
               
                strZS = strZStemp;
            }
           
            if(strXS.length > precision+1)
            {
                strXS = strXS.substr(0, precision+1)
            }

            //获取输入参数的长度
            var iLen = strZS.length;
            //如果输入参数的长度小于等于3,则直接返回
            //否则,再进行处理
            if (iLen > 3) {
                    //首先取模,以作为起始点,每3位截取一次存入数组,最后再进行拼接返回
                    var iMod = iLen % 3;
                    //每3位截取的起始点 
                    var iStart = iMod;
                    //每3位截取的存储数组
                    var aryReturn = [];

                    //循环处理:每3位截取一次 存储到数组
                    while (iStart + 3 <= iLen) {
                        aryReturn[aryReturn.length] = strZS.substring(iStart, iStart + 3);
                        iStart = iStart + 3;
                    }
                    //将数组中的数据连接起来
                    aryReturn = aryReturn.join(",");

                    //处理输入参数长度不是3的倍数的情况
                    if (iMod != 0) {
                        aryReturn = strZS.substring(0, iMod) + "," + aryReturn;
                    }
                    strZS = aryReturn;
                }
                while(strXS.length<precision+1)
                {
                    strXS=strXS+"0";
                }

                if(precision<=0)
                {
                    return strZS;
                }
                return strZS + strXS;
        }

 

 function vaildFloatNumberPerfect(evnt,obj){
         evnt=evnt||window.event;
         var keyCode=window.event?evnt.keyCode:evnt.which;

         if((obj.value.length==0 || obj.value.indexOf(".")!=-1) && keyCode==46) return false;
         return keyCode>=48&&keyCode<=57||keyCode==46||keyCode==8;
        }

 

html元素:

 <input  name="txtTransportAmount" type="text" value="8" id="txtTransportAmount"  onkeypress="return vaildFloatNumberPerfect(event,this) " onpaste="return !clipboardData.getData('text').match(/\D/) " ondragenter="return false " onblur="this.value = FormatNumber(this,2);" style="ime-mode:Disabled" />

用户评论
昵称 
内容  *
验证码   
   
Copyright © 2010 zdbase.com All Rights Reserved. 苏ICP备15039389号 可人软件设计