请各位大侠帮我看看...这是一个多文本框跳转的JS(一共是四个文本框,在文本框中输入4个字符光标自动跳转到下一个文本框中),我加了几个判断 判断文本框是否是数字,如果不正确光标自动返回到错误的文本框内...最后的一个if判断是把前四个文本框中输入的值以字符串形式拼接在一起,判断是否是数字并且长度必须是20位如果正确,弹出正确对话框...现在的问题是,所有的判断都不好用...每次提交都是跳转到最后的else 这...请各位大侠帮我修改下...十分感谢!
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<script ID="clientEventHandlersJS" LANGUAGE="javascript">
<!--
function T1_onkeyup() {
  if(document.card.T1.value.length==4){
     document.card.T2.focus();
   }

function T2_onkeyup() {
  if(document.card.T2.value.length==4){
     document.card.T3.focus();
   }
}
function T3_onkeyup() {
  if(document.card.T3.value.length==4){
     document.card.T4.focus();
   } 
}
//-->function checkForm(){var A = document.card.T1.value; 
var B = document.card.T2.value;
var C = document.card.T3.value;
var D = document.card.T4.value;
var E = A+B+C+D; var reg = /^\d{4}$/;

if(reg.test(A)){
alert("A错误!");
document.card.T1.focus();
return false;
}
if(reg.test(B)){
alert("B错误!");
document.card.T2.focus();
return false;
}
if(reg.test(C)){
alert("C错误!");
document.card.T3.focus();
return false;
}
if(reg.test(D)){
alert("D错误!");
document.card.T4.focus();
return false;
}

         var reg1 = /^\d{20}$/;         if(reg1.test(E)){
alert("E错误!");
return false;
}
else{
alert("正确!");
return true;
}
}</script><body>
<form method="post" name="card" action="" onsubmit="return checkForm()">
输入字符:
<input type="text" name="T1" size="5" maxlength="4" LANGUAGE="javascript" onKeyUp="return T1_onkeyup()">-<input type="text" name="T2" size="5" maxlength="4" LANGUAGE="javascript" onKeyUp="return T2_onkeyup()">-<input type="text" name="T3" size="5" maxlength="4" LANGUAGE="javascript" onKeyUp="return T3_onkeyup()">-<input type="text" name="T4" size="5" maxlength="4" LANGUAGE="javascript" onKeyUp="return T4_onkeyup()"><br/><input type="submit" name="submit" value="提交" /></form> 
</body>
</html>

解决方案 »

  1.   


           var A = document.card.T1.value; 
           var reg = /^\d{4}$/;
           if (!re1.exec(A)) {
                alert("A错误!");
                document.card.T1.focus();
                return false;
    }
      

  2.   


     var A = document.card.T1.value; 
           var reg = /^\d{4}$/;
           if (!reg.exec(A)) { //Sorry,上面写成re1了
                alert("A错误!");
                document.card.T1.focus();
                return false;
    }
      

  3.   

    没必要这样
    parseInt(s)==s判断下就好了。
      

  4.   

    用isNaN函数判断,这里有http://www.zhidao123.net/HTML/CONTENT/1/HTML_168.html
      

  5.   


    缺少考虑float情况,即使用上parseFloat也存在精度问题。不建议。用isNaN,或正则就够我比较喜欢用
    typeof num == 'number' && /^[-+]?\d*\.?\d+$/.test(num + '')注:红色部分的正则是临时写的,没经过测试应该可以鉴别出:0、-0、+0、-0.0、+0.0、-.5、+.5、.5 这些稍特殊一点的数字