是一个注册表单
 要求呢称为 5-10位的 字母或者数字 
 密码也是一样
但是我写了下面的代码后
有些验证虽然出错没,但是他还是submit了,已经试验过很多次了
还是没解决掉,哪为能帮我仔细看哈子吗?
谢谢了
<%@page contentType="text/html; charset=gb2312" import="java.util.*"%>
<jsp:useBean id="userbean" scope="request" class="school.UserBean"></jsp:useBean>
<LINK href="css/main.css" type=text/css rel=stylesheet>
<html>
  <!--
    if(document.regist.name.value!=""){
    var v=document.regist.name.value;
    for(i=0;i<v.length;i++){
    if(!((v.charCodeAt(i)>=48&&v.charCodeAt(i)<=57)||(v.charCodeAt(i)>=65&&
    v.charCodeAt(i)<=90)||(v.charCodeAt(i)>=97&&v.charCodeAt(i)<=122)))
    {  window.alert("呢称只能由数字和字母组成");
    document.regist.name.focus();
    break;
    }
    }
    }
    if(!(v.length>=5&&v.length<=10)){
    windows.alert("呢称至少5位最多10位");
    document.regist.password.focus();
    return false;
    }
    if(document.regist.password.value!=""){
    var v=documentregist.password.value;
    if(!(v.length>=5&&v.length<=10))
    window.alert("密码至少5位至多10位");
    return false;
    }
    if(!(v.length>=5&&v.length<=10)){
    windows.alert("呢称至少5位最多10位");
    document.regist.password.focus();
    return false;
    }
  -->
<script language="JavaScript" type="text/javascript">function chk()
{
   if(document.regist.name.value=="")
     {
   window.alert("请输入呢称!");
   document.regist.name.focus();
   return false;
}
        if(document.regist.name.value!=""){
          var v=document.regist.name.value;
          for(i=0;i<v.length;i++){
            if(!((v.charCodeAt(i)>=48&&v.charCodeAt(i)<=57)||(v.charCodeAt(i)>=65&&
            v.charCodeAt(i)<=90)||(v.charCodeAt(i)>=97&&v.charCodeAt(i)<=122)))
          {  window.alert("呢称只能由数字和字母组成");
          document.regist.name.focus();
         return false;
           }
          }
        }
        if(document.regist.name.value.length<5||document.regist.name.value.length>10){
          window.alert("呢称应该为5-10位");
           
           return false;
        }
if(document.regist.realname.value=="")
     {
   window.alert("请输入真实姓名!");
   document.regist.realname.focus();    return false;
}
         if(document.regist.realname.value!=""&&(document.regist.realname.length<5||document.realname.value.length>10)){
          window.alert("密码应该为5-10位");
          document.regist.realname.focus();
           return false;
        }
           
if(document.regist.password.value=="")
     {
   window.alert("请输入密码!");
   document.regist.password.focus();
   return false;
}
if(document.regist.password.value==""&&(document.regist.password.value.length<5||document.regist.password.value.length>10)){
          window.alert("密码应该为5-10位");
          document.regist.password.focus();
           return false;
        }
        if(document.regist.confi.value=="")
     {
   window.alert("请确认密码!");
   document.regist.confi.focus();
   return false;
}        if(document.regist.year.value!="")
     {
  tmp = regist.year.value;
          num = parseInt(tmp);
          if (tmp == "" || isNaN(num) ) {
            alert("年份必须是四位数字");
document.regist.year.focus();
            return false;
             }
    }
       if(document.regist.day.value!="")
     {
  tmp = regist.day.value;
          num = parseInt(tmp);
          if (tmp == ""||tmp.length>2 || isNaN(num) ) {
            alert("日期必须是1-2位数字");
document.regist.day.focus();
            return false;
             }
    }
        
        if(document.regist.check.value=="")
     {
   window.alert("请输入验证码!");
   document.regist.check.focus();
   return false;
}
        if(document.regist.check.value!=""&&(document.regist.check.value!=document.regist.ck.value)){
           window.alert("请输入验证码!");
   document.regist.check.focus();
   return false;
        }
          return true;
         
}
</script>
<head>
<title>注册</title>
</head>
<body bgcolor="#ffffff">
<form action="register_do.jsp" method="POST" name="regist">
<table width=60% id="register" align="center">
  <tr>
    <td colspan="3">
      <%@include file="header.jsp"%>
    </td>
  </tr>
  <tr>
    <td>呢称</td>
    <td>
      <input type="text" name="name"/>*
    </td>
    <td>5-10位数字或中文</td>  <tr>
    <td>真实姓名</td>
    <td>
      <input type="text" name="realname"/>*
    </td>
    <td>用于注册确认信息,请准确填写</td>  <tr>
    <td>设置密码</td>
    <td>
      <input type="text" name="password"/>*
    </td>
    <td>5-10位数字或者字母</td>
  </tr>
  <tr>
    <td>确认密码</td>
    <td>
      <input type="text" name="confi"/>
    </td>
    <td>    </td>
  </tr>
  <tr>
    <td>输入邮箱</td>
    <td>
      <input type="text" name="email"/>
    </td>
    <td>请准确填写,以便管理员与你联系</td>
  </tr>
  <tr>
    <td>选择界别</td>
    <td>
      <select name="grade">
      <%
        ArrayList grade = userbean.getAllGrade();
        Iterator it = grade.iterator();
        if (grade.size() < 1) {
        }
        else
          while (it.hasNext()) {
            String g = (String) it.next();
            out.println("<option value=" + g + ">" + g + "</option>");
          }
      %>
      </select>*
    </td>
    <td>用于注册确认信息,请准确填写</td>
  </tr>
  <tr>
    <td>选择班级</td>
    <td>
      <select name="vclass">
      <%
        ArrayList av = userbean.getAllVclass();
        Iterator iv = av.iterator();
        if (av.size() < 1) {
        }
        else {
          while (iv.hasNext()) {
            String c = (String) iv.next();
            out.println("<option value=" + c + ">" + c + "</option>");
          }
        }
      %>
      </select>*
    </td>
    <td>用于注册确认信息,请准确填写</td>
  </tr>
  <tr>
    <td>生日</td>
    <td>
      <input type="text" size="8" name="year"/>
      年
      <select name="month">
      <%
        for (int i = 1; i < 13; i++) {
          out.println("<option value=" + i + ">" + i + "</option>");
        }
      %>
      </select>
      月
      <input type="text" size="4" name="day"/>
      日
    </td>
    <td>年四位,日1-2位</td>
  </tr>
  <tr>
    <td>    </td>
    <td>
      <img src="image.jsp" alt="">
      <input type="hidden" name="ck" value='<%=(String)session.getAttribute("rand")%>' />
    </td>
  </tr>
  <tr>
    <td>请输入验证码</td>
    <td>
      <input type="text" name="check"/>
    </td>
  </tr>
  <tr>
    <td colspan="3">
      <input type="submit" value="确定注册" onclick="return chk()"/>
    </td>
  </tr>
  <tr>
    <td colspan="3">
      <a href="mail.jsp">联系管理员</a>
    </td>
  </tr>
  <tr>
    <td colspan="3">
      <%@include file="bottom.jsp"%>
    </td>
  </tr>
</table>
</form>
</body>
</html>

解决方案 »

  1.   

    在你的 <form...后加个 onSubmit="调用你的验证函数;return false;">,修改你的验证函数来提交,适当的地方加上 document.FormID(自己修改).submit();
      

  2.   

    RikerLu(冰海浮云) (
    那个是不行的
    我最后把验证长度的和验证 字符的加在一起ok 了
      呵呵
    郁闷呀
      

  3.   

    楼主这样写校验太费时费力了,如果你使用struts,它内置validation框架,只需几行简单的xml配置就可以自动生成js校验码来进行验证,同时自动在服务器端也进行同样规则的验证,即保证了js验证的快速反馈特性,又保证了用户禁用js时,服务器端数据的正确性。
    就算不使用struts,你也可以到apache下载validation框架包用到你的项目里,相信会很大的提高你的开发效率的。