请问一下js中怎么来判断输入小数点并且只让他输入一个小数点 
function isNumber(String,name) {
        var Letters = "1234567890.";  //可以自己增加可输入值
        var i;
        var c;
        for (i = 0; i < String.length; i++) {
                c = String.charAt(i);
                if (Letters.indexOf(c) < 0) {
                        alert(name + "只能为数字");
                        return true;
                }
        }
}
这是我写的但是没有判断小数点的个数.  需要怎么判断

解决方案 »

  1.   

    给lz做了个列子,实现了你要的效果:<script>
    function f(){
    var i = 0 ;
    var str ="jkfjafsa.jkfjals.fjdsalkfjdsla.djaksl";
    while(str.lastIndexOf(".")!=-1){
    i++;
            str = str.substring(0,str.lastIndexOf("."));
    }
    if(i>0){
    alert("有"+i+"点");
    }
    }
    f();
    </script>
      

  2.   

    谢谢大家  我是把js单独做出来了放在一个文件夹中只是在页面调用一下,所以用正则比较麻烦  但是kokobox 写的只是判断小数点  我需要的功能是只能输入数字和小数  但小数点只可以有一个.
      

  3.   


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <TITLE> New Document </TITLE>
    <META NAME="Generator" CONTENT="EditPlus">
    <META NAME="Author" CONTENT="">
    <META NAME="Keywords" CONTENT="">
    <META NAME="Description" CONTENT="">
    </HEAD>
    <script>
    var tt="11.5";
    var reg=/^(\d+)(\.\d+)?$/;
    alert(reg.test(tt));
    tt="11.5.0";
    alert(reg.test(tt));
    </script>
    <BODY></BODY>
    </HTML>
      

  4.   

    用正则表达式最简单。不过效率不高。并且还好考虑全角和半角的区分,你还可以用循环charAt()函数。
      

  5.   


    //JS自带函数
    if(isNaN("23.32.2")){
    alert("请输入一个正确数字");
    }
    //正则
    if(!/^\d+(\.\d+)?$/g.test("23.02.22")){
    alert("请输入一个正确数字");
    }
      

  6.   

    找了一个方法他却在运行的时候显示对象不支持此方法或属性
    function checkNum(Obj,s,f)
    {    var thisnum=Obj.value;
        if(thisnum=="" return true;
        var n=s-f;//整数位数
        var i;
        if(isNaN(thisnum)!=true)//当输入为数值
        {
            if(f>0)
            {
                i=thisnum.indexOf(".";
                if(i==-1)//当找不到小数,可以输入整数
                {
                    if(thisnum.length>n)
                    {
                        Obj.select();
                        alert("输入的 整数位 应小于"+n+"位,请重输!";
                        return false;
                    }
                    else return true;
                }            if(i==0 || i==thisnum.length-1)
                {
                    Obj.select();
                    alert("输入错误,请重输!";
                    return false;
                }            if(i>0)
                {
                    var floatnum=thisnum.substr(i+1);//小数部分
                    var plusnum=thisnum.length-floatnum.length-1;//整数部分
                    if(plusnum>n)
                    {
                        Obj.select();
                        alert("输入的整数位应小于或等于"+n+"位,请重输!";
                        return false;
                    }
                    if (floatnum.length>f)
                    {
                        Obj.select();
                        alert("输入的小数位应小于或等于"+f+"位,请重输!";
                        return false;
                    }
                }        }        if(f==0)
            {
                i=thisnum.indexOf(".";
                if(i!=-1)
                {
                    Obj.select();
                    alert("只能输入整数,且小于或等于"+n+"位,请重输!";
                    return false;
                }            if(thisnum.length>n)
                {
                    Obj.select();
                    alert("只能输入整数,且小于或等于"+n+"位,请重输!";
                    return false;
                }
            }        return true;
        }
        else
        {
            Obj.select();
            alert("请输入一个数值!";                                 /////在这一句会报错,提示对象不支持方法或属性
            return false;
        }}
      

  7.   

    另在html中运行是正确的,但是在jsp中运行却会出错
      

  8.   

    if(thisnum=="" return true; 少一个)
      

  9.   

    我搞定了,非常谢谢大家的关心和帮助
    function isNumber(String,name) {
    var Letters = "1234567890.";  //可以自己增加可输入值
    var i;
    var c;
            var pos1 = String.indexOf(".");
            var pos2 = String.lastIndexOf(".");
            if (pos1 != pos2) {
             alert (name+"语法错误");
              return true;
         }
    for (i = 0; i < String.length; i++) {
    c = String.charAt(i);
    if (Letters.indexOf(c) < 0) {
    alert(name + "只能为数字");
    return true;
    }         }   }
    这是我写的