regist.jsp
_____________
<script type="text/javascript">
function usernameCheck()
{
    
var name=document.form.(user.username).value; 
var errorMsg=document.getElementById("nameErrorMsg");
    errorMsg.innerHTML="";

   if (name.length==0)
   {
     errorMsg.innerHTML="请输入用户名!";
     form.username.focus();
     return false;
   }
  for(var i=0;i<name.length;i++){
     var ch=name.charAt(i);
     if(ch>"z"||ch<"a"){
       if(ch>"Z"||ch<"A"){
         if(ch>"9"||ch<"0"){
            errorMsg.innerHTML="用户名只能包含字母和数字!";
            form.username.focus();
     return false;
         }
       }
     }
   }
   if(name.length>8||name.length<6){
     errorMsg.innerHTML="用户名长度在6-8之间!";
     form.username.focus();
     return false;
   }
   return true;
}
  
   function passwordCheck()
   {
   var pwd=document.form.(user.password).value;
   var psderrorMsg=document.getElementById("passErrorMsg");
   psderrorMsg.innerHTML="";
     if(pwd==""){
       psderrorMsg.innerHTML="请输入密码!";
       form.password.focus();
       return false;
     }
     if(pwd.indexOf(" ",0)!=-1){
      psderrorMsg.innerHTML="密码不能包含空格!";
       form.password.focus();
       return false;
     }
     if(pwd.length>8||pwd.length<6){
      psderrorMsg.innerHTML="密码长度在6-8之间";
        form.password.focus();
        return false;
     }
     return true;
   }
  
function check(){
   if(usernameCheck()&&passwordCheck()){
     return true;
   }else{
     return false;
     }
 } 
</script>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户注册</title>
</head>
<body>
<s:form name="form" onSubmit="return check()" action="registAction!Save.action" method="post">
 <table border="0" align="center">
 <tr>
  <th  id="nameErrorMsg" class="red" height="10" colspan="2" align="center" valign="middle"></th>
 </tr>
 <tr>
 <td>
 <s:textfield name="user.username" label="输入用户名"></s:textfield>
 </td>
 </tr>
 <tr>
  <th id="passErrorMsg" class="red" colspan="2" height="10" align="center" valign="middle"></th>
 </tr>
 <tr>
 <td>
 <s:textfield name="user.password" label="输入密码"></s:textfield>
 </td>
 </tr>
 <tr>
 <td><input type="radio" name="user.userlevel">用户 </td>
 </tr>
 <tr colspan="2">
  <td><input type="submit" value="提交"> </td>
  <td><input type="reset" value="重置"> </td>
  </tr>
 </table>
 </s:form>
</body>
</html>——————————
在表单里为什么name="user.username"和name="user.password"就不行,因为我用的hibeinate,要提交User对象里的username和password到数据库里。怎么就没有反映呢,javascript没有起到作用,哪里出错

解决方案 »

  1.   

    var name=document.form.(user.username).value; 
    改成这样的:
    var name=document.getElementsByName("user.username")[0];另外你数字的验证似乎有误:if(ch>"9"||ch<"0"){
    应该是 if(ch<"9"||ch>"0"){
      

  2.   

    可以传到后台啊,都可以注册把信息写到数据库里,就是无法验证,显示提示,是不上面的var name=document.form.(user.username).value  里面(user.username)问题???
      

  3.   

    if(ch>"z"||ch<"a"){
      if(ch>"Z"||ch<"A"){
      if(ch>"9"||ch<"0"){
    你这逻辑有问题啊。这几个是并列关系,而不是包含关系。
    建议你使用正则表达式:
    if(name.search(/[^a-zA-Z0-9]/)!=-1) {
      errorMsg.innerHTML="用户名只能包含字母和数字!";
      form.username.focus();
      return false;
    }
      

  4.   

    var name=document.form.(user.username).value; 改为
    var name=document.form.elements("user.username").value; 
    其他的可以按照以上的来改,主要是这个问题。 
      

  5.   

    另外 onSubmit="return check()" 要加分号 如下
     onSubmit="return check();"
      

  6.   

    改过后是可以验证,显示alert信息,但是立即执行action="registAction!Save.action,不论验证是否对错,这是什么问题??
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ taglib prefix="s" uri="/struts-tags" %>    
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <script type="text/javascript">
    function usernameCheck()
    {
        
    var name=document.form["user.username"].value;
    var errorMsg=document.getElementById("nameErrorMsg");
        errorMsg.innerHTML="";

       if (name.length==0)
       {
         errorMsg.innerHTML="请输入用户名!";
         form.username.focus();
         return false;
       }
      for(var i=0;i<name.length;i++){
         var ch=name.charAt(i);
         if(ch>"z"||ch<"a"){
           if(ch>"Z"||ch<"A"){
             if(ch>"9"||ch<"0"){
                errorMsg.innerHTML="用户名只能包含字母和数字!";
                form.username.focus();
         return false;
             }
           }
         }
       }
       if(name.length>8||name.length<6){
         errorMsg.innerHTML="用户名长度在6-8之间!";
         form.username.focus();
         return false;
       }
       return true;
    }
      
       function passwordCheck()
       {
       var pwd=document.form["user.password"].value
       var psderrorMsg=document.getElementById("passErrorMsg");
       psderrorMsg.innerHTML="";
         if(pwd==""){
           psderrorMsg.innerHTML="请输入密码!";
           form.password.focus();
           return false;
         }
         if(pwd.indexOf(" ",0)!=-1){
          psderrorMsg.innerHTML="密码不能包含空格!";
           form.password.focus();
           return false;
         }
         if(pwd.length>8||pwd.length<6){
          psderrorMsg.innerHTML="密码长度在6-8之间";
            form.password.focus();
            return false;
         }
         return true;
       }
      
    function check(){
       if(usernameCheck()&&passwordCheck()){
         return true;
       }else{
         return false;
         }
     } 
    </script>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>用户注册</title>
    </head>
    <body>
    <s:form name="form" onSubmit="return check()" action="registAction!Save.action" method="post">
     <table border="0" align="center">
     <tr>
      <th  id="nameErrorMsg" class="red" height="10" colspan="2" align="center" valign="middle"></th>
     </tr>
     <tr>
     <td>
     <s:textfield name="user.username" label="输入用户名"></s:textfield>
     </td>
     </tr>
     <tr>
      <th id="passErrorMsg" class="red" colspan="2" height="10" align="center" valign="middle"></th>
     </tr>
     <tr>
     <td>
     <s:textfield name="user.password" label="输入密码"></s:textfield>
     </td>
     </tr>
     <tr>
     <td><input type="radio" name="user.userlevel">用户 </td>
     </tr>
     <tr colspan="2">
      <td><input type="submit" value="提交"> </td>
      <td><input type="reset" value="重置"> </td>
      </tr>
     </table>
     </s:form>
    </body>
    </html>
      

  7.   

    form.username.focus();
    这个获得焦点是为执行false用的嘛?
      

  8.   


    <input type="submit" value="提交">建议将这个改为type="button"
    将onsubmit触发的事件,改为此button的onclick触发。在方法中提交form。