以下是我写的方法:实现只能输入数字与小数点,如果有错误立即退格(大家可以试试我的方法)  但是有不完善之处 
想最多只能输入一个 . 而且小数点后最多2位数字
<input name="FullRate" id="Text2" type="text" maxlength="10" onblur="CheckInputSelect(this)" onkeyup="CheckInputSelect(this)" />
    function CheckInputFloat(oInput) {
        var value = "";
        var reg = "";
        if (oInput.value == "") return;
        if (oInput.value.substring(0, 1) == "-") {
            value = oInput.value.substring(1, oInput.value.length);
            reg = "-";
        }
        else {
            value = oInput.value;
        }        if (oInput.value.substring(0, 1) == ".") {
            value = oInput.value.substring(1, oInput.value.length);
            reg = "";
        }
        else {
            value = oInput.value;
        }        if ('' != value.replace(/\d/g, '')) {
            value = value.replace(/[^0-9\.]/g, '');
            //value = value.replace(/\d+(\.?\d{0,2})?/g, '');
            //alert("OK");
        }
        oInput.value = reg + value;
    }

解决方案 »

  1.   

    试试这个吧.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title>Untitled Page</title>
    </head>
    <body>
    <script>
        function regInput(obj, reg, inputStr) {
            var docSel = document.selection.createRange()
            if (docSel.parentElement().tagName != "INPUT") return false
            oSel = docSel.duplicate()
            oSel.text = ""
            var srcRange = obj.createTextRange()
            oSel.setEndPoint("StartToStart", srcRange)
            var str = oSel.text + inputStr + srcRange.text.substr(oSel.text.length);
            return reg.test(str)
        }
    </script>
    <input type="text" id="txt" onkeypress    = "return regInput(this,/^(-|-\d*|-\d*.|\d*|\d*.|\d*\.[0-9]{0,2}|0)$/,String.fromCharCode(event.keyCode))">
    </body>
    </html>
      

  2.   

    正则全搞定L@_@K
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
     <head>
      <title> new document </title>
      <meta name="generator" content="editplus" />
      <meta name="author" content="" />
      <meta name="keywords" content="" />
      <meta name="description" content="" />
      <script type="text/javascript">
      <!--    function CheckInputFloat(oInput, isBlur) { if (oInput.value == "") return;        var value = oInput.value;
    var reg;
    if (isBlur)
    reg = /^[^0]\d*(\.\d{1,2})?$/g;
    else
    reg = /^[^0]\d*(\.|\.\d{1,2})?$/g; if (!reg.test(value))
    oInput.value = oInput.value.substr(0, oInput.value.length-1);
        }  //-->
      </script>
     </head> <body>
      <input name="FullRate" id="Text2" type="text" maxlength="10" onblur="CheckInputFloat(this, true)" onkeyup="CheckInputFloat(this)" /> </body>
    </html>
      

  3.   


    <script type="text/javascript">
    function myfilter(e) {
     var obj=e.srcElement || e.target;
     var dot=obj.value.indexOf(".");//alert(e.which);
     var  key=e.keyCode;
     if(key==0)
      key=e.which;
     if(key==8 || key==9 || key==46 || (key>=37  && key<=40))//这里为了兼容Firefox的backspace,tab,del,方向键
      return true;
     if (key<=57 && key>=48) { //数字
      if(dot==-1)//没有小数点
         return true;
        else if(obj.value.length<=dot+2)//两位小数
      return true;
     } else if((key==46) && dot==-1){//小数点
      return true;
     }        
        return false;
    }
    </script>
    <input type="text" id="ttext" onkeypress="return myfilter(event)" />
      

  4.   

    支持 3 楼的说法。2楼的代码,以后怎么维护?能写到js函数里面的东西,怎么都写到了html里面去了?web编程的原则就是html、css、js这3个文件分开写,提高代码的可阅读性,也就提高了可维护性。一般html里面根本不用放入onblur之类的属性。这是DOM1的编程方法。
    可以window.onload = function(){
        document.getElementById('Text2').onblur = function(){
            //Your code is here
        };
    };
      

  5.   

    是的,少个转义<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
        <head>
            <title>Untitled Page</title>
        </head>
        <script>
            var Reg=new Object();
            Reg.NOCHECK=/^(-|-\d*|-\d*\.|\d*|\d*\.|\d*\.[0-9]{0,2}|-\d*\.[0-9]{0,2}|0)$/
            window.onload=function(){
                document.getElementById("txt").onkeypress    = function() {
                   return regInput(event,String.fromCharCode(event.keyCode))
                }
            }
            function regInput(e,inputStr) {
                var _obj=e.srcElement||e.target;
                var docSel = document.selection.createRange()
                if (docSel.parentElement().tagName != "INPUT") return false
                var _oSel = docSel.duplicate()
                _oSel.text = ""
                var srcRange = _obj.createTextRange()
                _oSel.setEndPoint("StartToStart", srcRange)
                var _sInputText = _oSel.text + inputStr + srcRange.text.substr(_oSel.text.length);
                return  Reg.NOCHECK.test(_sInputText)
            }
        </script>
        <body>        <input type="text" id="txt" >
        </body>
    </html>