通过 keyup
keydownkeypress
这些键盘事件可以控制一下在就用自定义的函数筛选一下

解决方案 »

  1.   

    "^(-?\d+)(\.\d+)?$"  //浮点数 function formatNum(s) //将数字转换成三位逗号分隔的样式
    {
      if(!/^(\+|-)?\d+(\.\d+)?$/.test(num)){alert("wrong!"); return num;}
      var re = new RegExp().compile("(\\d)(\\d{3})(,|\\.|$)");
      num += ""; while(re.test(num))
        num = num.replace(re, "$1,$2$3")
      return num;
    }
    alert(formatNum(-12345678.123));
    alert(formatNum("12345678.123"));
    alert(formatNum("10000000000000000000000000000000000000000"));
      

  2.   

    如果没搞错的话...楼主的意思是输入的只能是一个数值(我原先以为是可以输入几个用","隔开的数值)...
    这个正则表达式
                 \d{1,3}(?:,\d{3})*(?:\.\d+)?
    可以匹配类似48,125,654.58412这样的数值(完整匹配),已在JScript 5.6下面通过,希望对楼主有帮助~~~:)
      

  3.   

    常用的正则表达式:
    http://www.ideacool.net/viewidea770.html
      

  4.   

    function isDigit(s)
    {
    var patrn=/^[0-9]{1,20}$/;
    if (!patrn.exec(s)) return false
    return true
    }
      

  5.   

    function isReal (theStr, decLen) {
    var dot1st = theStr.indexOf('.');
    var dot2nd = theStr.lastIndexOf('.');
    var OK = true;if (isEmpty(theStr)) return false;if (dot1st == -1) {
    if (!isInt(theStr)) return(false);
    else return(true);
    }else if (dot1st != dot2nd) return (false);
    else if (dot1st==0) return (false);
    else {
    var intPart = theStr.substring(0, dot1st);
    var decPart = theStr.substring(dot2nd+1);if (decPart.length > decLen) return(false);
    else if (!isInt(intPart) || !isInt(decPart)) return (false);
    else if (isEmpty(decPart)) return (false);
    else return(true);
    }
    }