没有很仔细的查看你的代码。我想你的要求是判断用户输入的一个字符串是否为一个Double数值吧?可以这样解决:1——
先把这个字符串转换为数值类型,如果转换失败,说明不是有效的数值字符串:var strNumber;//要判断的字符串变量,这里没有赋值
function IsDoubleNum(strNumber)
{
  try
  {
    if(!strNumber)//判断strNumber是否为null,为null则不是double,看你自己的需要了
      return false;
    var tmp=strNumber/1;//把字符串直接除以1,如果是数值字符串则OK,否则产生异常
    var idx=strNumber.indexOf(".");//检索字符串中是否有小数点
    if(idx>0&&idx<strNumber.length-1)//如果有小数点且不在最后面则是Double数据
      return true;
  }
  catch
  {
  }
  return false;
}try
{
}var strNumberTmp;
strNumberTmp=strNumber+0;

解决方案 »

  1.   

    switch-caseif的效率太低了,特别是你现在这么多if的情况
      

  2.   

    bool dotted = false;//是否已经遇到小数点
    bool success = true;//成功for(int i=0;i<str.length;i++)
    {
        switch(str.charAt(i))
        {
            case '0':
            case '1':
            ......
            case '9':
                continue;
            case '.':
                if(dotted)//遇到过小数点,则此数据无效
                  success = false;
                else
                  dotted = true;
                break;
            default:
                success = false;//遇到其他字符,则此数据无效
        }
        if(!success)//如果遇到其他字符或多于一个的小数点
          break;
    }
      

  3.   

    另外,为了严谨,你最好还要检查一下整数部分和小数部分的长度,确保其未超出double的范围
      

  4.   

    对JavaScipt不动,所以在套用triout(笨牛)的方法的时候,产生错误:
    function isNumDbl(obj){        
    var strNumber=obj.value;//要判断的字符串变量
    var isDbl;
    try{
    var strNumberTmp;
    strNumberTmp=strNumber+0;
                }
    catch{ isDbl=false;
    }
    if(!isDbl){
    alert("请输入有效的数字(>0)!");
    obj.focus();
    }
    }
      

  5.   

    错误行在catch部分。
    fantasydog(百里怜雪)的方法相对复杂了些。
    而且形如00000.12345132的数字不能判断。
    需要添加代码阿。
      

  6.   

    要疯了:我测试的这个代码也有问题?
    <script language="javascript">
    function isNumDbl(obj){        
    var str=obj.value;//要判断的字符串变量
    var dotted =false;//是否已经遇到小数点
    var success=true;//成功
    if(str.charAt(0)=="0"&&str.charAt(1)=="0")
    success=false;
    for(int i=0;i<str.length;i++)
    {
    switch(str.charAt(i))
    {
    case '0':
    case '1':
    case '2':
    case '3':
    case '4':
    case '5':
    case '6':
    case '7':
    case '8':
    case '9':
    continue;
    case '.':
    if(dotted)//遇到过小数点,则此数据无效
    success = false;
    else
    dotted = true;
    break;
    default:
    success = false;//遇到其他字符,则此数据无效
     }
    if(!success)//如果遇到其他字符或多于一个的小数点
    break;
    }
    if(!success){
    alert("请输入有效的数字(>0)!");
    obj.focus();
    }
    }
    </script>