<input type="text" onkeyup="value=value.replace(/[^\d\.]/ig,'')">只能保证输入的数字,如何使得输入的小数位数是固定的

解决方案 »

  1.   


    <input type="text" onkeyup="value=value.replace(/[^\d\.]/ig,'').substr(0,(value.indexOf('.')==-1?value.length:(value.indexOf('.')+3)))">需要保留几位就在   value.indexOf('.')+3   修改数字即可3为保留2位,保留4位数字改成5,以此类推
    已测试成功
      

  2.   


    <html>   
    <head>   
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">   
    <title>小数验证</title>   
    <script>   
    String.prototype.replaceAll = function(s1, s2) {    
        return this.replace(new RegExp(s1, "gm"), s2); //g全局   
    }   
      
    /***  
    * 此验证方法很简单,但设计也很巧妙。使用的是我们常用split、array、substring等  
    * @author hoojo   
    * @param o 验证的对象,即当前文本域  
    * @param precision 精确多少位小数  
    * @version 1.0  
    **/  
    function checkFloat(o, precision) {   
        var val = o.value;//验证小数   
        if (parseFloat(val) != val) {   
            var ar = val.split('');   
            for(var i = 0; i < ar.length; i++) {   
                var charCode = ar[i].charCodeAt(0);   
                if (charCode > 57 || charCode < 46 || charCode == 47) {   
                    o.value = val.replaceAll(ar[i], '');   
                }   
                /*var j = val.indexOf('.');  
                if (j != -1) {  
                    o.value = val.substring(0, val.lastIndexOf('.'));  
                }*/  
            }   
        }    
        var ary = o.value.split('.');   
        if (ary.length >= 2) {   
            if (ary[0] == "") {   
                ary[0] = 0;   
            }   
            var temp = ary[1];   
            if (ary[1].length > precision) {   
                ary[1] = ary[1].substring(0, precision);   
            }    
            o.value = ary[0] + "." + ary[1];   
        }   
    }   
    </script>   
    </head>   
      
    <body>   
    <input type=text value=""  onkeyup="checkFloat(this, 4)"/>   
    </body>   
      
    </html> 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/IBM_hoojo/archive/2010/06/24/5691695.aspx参考:http://blog.csdn.net/IBM_hoojo/archive/2010/07/01/5707588.aspx
      

  3.   


    <input type="text" onkeyup="value=value.replace(/[^\d\.]/ig,'').replace(/\.(\d*\.)/ig,'$1'); if(value.indexOf('.')>0) value = value.substring(0,value.indexOf('.')+3)" onchange="fun(this)">
    <!-- 
    replace(/[^\d\.]/ig,'') 将非数字或"."去掉
    replace(/\.(\d*\.)/ig,'$1') 只保留最后一个"."
    if(value.indexOf('.')>0) value = value.substring(0,value.indexOf('.')+3) 如果有".","."后保留2位(想要保留几位就是value.indexOf('.')+ (n+1))
    -->
      

  4.   

    哦,最后那个  onchange="fun(this)" 应该删掉,忘了…… :P
      

  5.   


    那就更简单了<input type="text" onkeyup="value=value.replace(/[^\d\.]/ig,'').replace(/\.(\d*\.)/ig,'$1'); if(value.indexOf('.')>0 && value.length - value.indexOf('.') > 2) value = parseFloat(value).toFixed(2)">
    <!-- 
        replace(/[^\d\.]/ig,'') 将非数字或"."去掉
        replace(/\.(\d*\.)/ig,'$1') 只保留最后一个"."
        if(value.indexOf('.')>0 && value.length - value.indexOf('.') > 2) value = parseFloat(value).toFixed(2) 
    如果有".",且"."后位数>2位,则保留2位小数(想要保留几位就是value.toFixed(n),还有 value.length - value.indexOf('.') > n)
    -->