说明:这个程序主要功能是,显示一个注册新用户的界面,
     请输入用户名:
     请输入密码:
     .....
现在问题是我设了个判定,如果没有输入用户名的话,就提示,用户名不能空,请输入用户名
但是这一句为什么不执行,直接就进了下面的程序,
你输入的用户名是:**特别说明:把if (form1.username.value==null||"".equals(form1.username.value.trim()))
       改为if(form1.username.value=="")也是同样的错误文件userRegist1.jsp  应该这个文件有问题
<%@ page contentType="text/html;charset=gb2312"%>
<script language="javascript">
function on_submit(){  if (form1.username.value==null||"".equals(form1.username.value.trim())){
    alert("用户名不能为空,请输入用户名!");
    form1.username.focus();
    return false;
  }
  if (form1.userpassword.value==null||"".equals(form1.userpassword.value.trim())){
    alert("用户密码不能为空,请输入密码");
    form1.userpassword.focus();
    return false;
  }
  if(form1.reuserpassword.value==null||"".equals(form1.reuserpassword.value.trim())){
    alert("用户确认密码不能为空,请输入确认密码!");
    form1.reuserpassword.focus();
    return false;
  {
  if(form1.reuserpassword.value!=form1.userpassword.value){
    alert("密码与确认密码不一致,请重新输入密码!")
    form1.reuserpassword.clear;
    form1.userpassword.clear;
    form1.userpassword.focus;
    return false;
  if (form1.email.value.length!=0){
    int a,b;
    for(i=0;i<form1.email.value.length;i++)
      if (form1.email.value.charAt(i)=="@")
         a=i;
      if (form1.email.value.charAt(i)==".")
         b=i;
    if (a==form1.email.value.length||a>b||b==form1.email.value.length){
       alert("非法Email地址!")
       form1.email.focus();
       return false;
    }
  }else{
    alert("请输入Email地址");
    form1.email.focus;
    return false;
  }
}
</script>
<html>
<head>
<title>新用户注册</title>
</head>
<body>
<form name="form1" action="acceptUserRegist1.jsp" metchod="post" onsubmit="return on_submit()">
    新用户注册<br/>
    用户名(*):<input name="username" type="text" size="20"><br/>
    密&nbsp;码(*):<input name="userpassword" type="password" size="20"><br/>
    再输入一次密码(*):<input name="reuserpassword" type="password" size="20"><br/>
    性别是:<input name="sex" type="radio" value="男" checked>男<input name="sex" value="女" type="radio"> 女<br/>
    出生年月:<select name="year">
           <option value="1980">1980</option>
           <option value="1981">1981</option>
           <option value="1982">1982</option>
           <option value="1983">1983</option>
           <option value="1984">1984</option>
           <option value="1985">1985</option>
           <option value="1986">1986</option>
           <option value="1987">1987</option>
           </select>
    年<select name="month">
     <option value="1">1</option>
     <option value="2">2</option>
     <option value="3">3</option>
     <option value="4">4</option>
     <option value="5">5</option>
     <option value="6">6</option>
     <option value="7">7</option>
     <option value="8">8</option>
     <option value="9">9</option>
     <option value="10">10</option>
     <option value="11">11</option>
     <option value="12">12</option>
     </select>
    月<input type="text" name="day" size=:"2" maxlength=2>日<br/>
  电子邮箱(*):<input name="email" maxlngth=28><br/>
  家庭住址:<input type="text" name="address" size="20"><br/>
  <input name="submit" type="submit" value="提交">
  <input name="reset" type="reset" value="全部重写">
</form>
</body>
</html>         
文件2 acceptUserRegist1.jsp 和这个文件应该无关
<%@ page contentType="text/html;charset=gb2312"%>
<%!
   public String codeToString(String str){
     String s=str;
     try{
       byte tempB[]=s.getBytes("ISO-8859-1");
       s=new String(tempB);
       return s;
     }catch(Exception e){
       return s;
     }
   }
%>
<html>
<head>
<title>接收新用户注册</title>
</head>
<body>
这是新用户注册所提交的数据:<br/>
用户名是:<%=codeToString(request.getParameter("username"))%><br/>
密码是:<%=codeToString(request.getParameter("userpassword"))%><br/>
性别是:<%=codeToString(request.getParameter("sex"))%><br/>
出生年月是:<%=request.getParameter("year")+request.getParameter("month")+request.getParameter("day")%><br/>
电子邮箱地址是:<%=request.getParameter("email")%><br/>
家庭住址是:<%=codeToString(request.getParameter("address"))%><br/>
</body>
</html>

解决方案 »

  1.   

    <form name="form1" action="acceptUserRegist1.jsp" metchod="post" onsubmit="return on_submit()">我觉得这里的return on_submit()并没有执行.
    因为onsubmit="return on_submit()"中的""中并不被认为是java语句
    不知道换成EL表达式行不行
    onsubmit="return on_submit()"换成onsubmit="${on_submit()}"PS:我只是初学JSP...错了勿怪
      

  2.   

    而且我觉得 on_submit()这个方法的声明应该放到JSP的声明元素<%!   %>中更好些...
    也就是
    <%! 
    on_submit(){  if (form1.username.value==null||"".equals(form1.username.value.trim())){
        alert("用户名不能为空,请输入用户名!");
        form1.username.focus();
    .....
    ....
    %>
      

  3.   

    javascript没有trim函数,要自己写 String.prototype.trim= function()
    {
       return this.replace(/(^\s*)|(\s*$)/g, "");
      } 
      

  4.   

    if(conno==null)
    {out.println("<script language=javascript>alert('错误提示:未输入合同协议号!');javascript:history.back();</script>");}
    不知道对你有没有帮助
      

  5.   

    <form name="form1" action="acceptUserRegist1.jsp" metchod="post" onsubmit="return on_submit()">改成
    <form name="form1" action="acceptUserRegist1.jsp" metchod="post"> <input name="submit" type="submit" value="提交">改成
     <input name="submit" type="submit" value="提交" onclick="return on_submit()">
    这样试试.
      

  6.   

    我用的也是这个
    kevinliuu(@_@) ( ) 
    String.prototype.trim= function()
    {
       return this.replace(/(^\s*)|(\s*$)/g, "");
      } 
      

  7.   

    上面的完全错了,不好意思
    看看这个标题:全角标点导致onsubmit不起作用
    作者:dj_hsl
    来源:千一网络
    时间:2006-3-16
    我们推荐: 【SQL Server 触发器专题】 【千一图书2006精品百分百】 【TranExhibition&#8482;】 
    function checkSubmit(){
     if(form1.uid.value==""){
      alert("用户名不能够为空!");
      return false;
     }
     return true;
    }
    <form name="form1" method="post" action="douserreg.asp" onSubmit="return checkSubmit();">以上代码会导致不论uid为空与否,form1都会提交。编者著:在语句 alert("用户名不能够为空!"); 中,使用中文分号作为语句分隔符,导致 JavaScript出现异常,所以无法返回 false 值,onsubmit事件就无法被拦截,于是不论 uid 是否为空,均被提交。如果仔细观察,在 IE 里面,提交的瞬间,状态栏左角会出现一个黄色三角形的符号,或者会弹出一个对话框,表示脚本出错。另外,中文空格也是容易出现的问题。
      

  8.   

    楼主很多地方语法有问题,比如}输成{这些错误会让你的js根本就没有执行,你在你最前面加入alert("in");就知道你的js执行没有,我试过了,很多错误,你慢慢改!
      

  9.   

    试试这个
    Email那以@开始和以@结束的没检验<%@ page contentType="text/html;charset=gb2312"%>
    <script language="javascript">
    function on_submit(){  if (form1.username.value==""){
        alert("用户名不能为空,请输入用户名!");
        form1.username.focus();
        return false;
      }
      if (form1.userpassword.value==""){
        alert("用户密码不能为空,请输入密码");
        form1.userpassword.focus();
        return false;
      }
      if(form1.reuserpassword.value==""){
        alert("用户确认密码不能为空,请输入确认密码!");
        form1.reuserpassword.focus();
        return false;
      }    if(form1.reuserpassword.value!=form1.userpassword.value){
        alert("密码与确认密码不一致,请重新输入密码!")
        form1.reuserpassword.clear;
        form1.userpassword.clear;
        form1.userpassword.focus;
        return false;
    } if(form1.email.value=="")
    {
    window.alert("请输入Email地址");
    return false;
    } if(form1.email.value.indexOf("@")<0)
    {
    window.alert("非法Email地址!");
    return false;
    }
    return true;
    }
    </script>
    <html>
    <head>
    <title>新用户注册</title>
    </head>
    <body>
    <form name="form1" action="acceptUserRegist1.jsp" metchod="post" onsubmit="return on_submit()">
        新用户注册<br/>
        用户名(*):<input name="username" type="text" size="20"><br/>
        密&nbsp;码(*):<input name="userpassword" type="password" size="20"><br/>
        再输入一次密码(*):<input name="reuserpassword" type="password" size="20"><br/>
        性别是:<input name="sex" type="radio" value="男" checked>男<input name="sex" value="女" type="radio"> 女<br/>
        出生年月:<select name="year">
               <option value="1980">1980</option>
               <option value="1981">1981</option>
               <option value="1982">1982</option>
               <option value="1983">1983</option>
               <option value="1984">1984</option>
               <option value="1985">1985</option>
               <option value="1986">1986</option>
               <option value="1987">1987</option>
               </select>
        年<select name="month">
         <option value="1">1</option>
         <option value="2">2</option>
         <option value="3">3</option>
         <option value="4">4</option>
         <option value="5">5</option>
         <option value="6">6</option>
         <option value="7">7</option>
         <option value="8">8</option>
         <option value="9">9</option>
         <option value="10">10</option>
         <option value="11">11</option>
         <option value="12">12</option>
         </select>
        月<input type="text" name="day" size=:"2" maxlength=2>日<br/>
      电子邮箱(*):<input name="email" maxlngth=28><br/>
      家庭住址:<input type="text" name="address" size="20"><br/>
      <input name="submit" type="submit" value="提交">
      <input name="reset" type="reset" value="全部重写">
    </form>
    </body>
    </html>
      

  10.   

    晕,一个人也没说对,不过还是谢谢大家
    居然最大的错误是 int a,b;
    很奇怪,为什么加上int a,b;就提示说少";"号
    改为int a=0;
        int b=0;
    也不行?谁解释一下?解释准的有分
    现在我只能把Email验证程序改为
      if (form1.email.value.length!=0){
        for(i=0;i<form1.email.value.length;i++){
          if (form1.email.value.charAt(i)=="@")
             break;    
        }
        for(j=0;j<form1.email.value.length;j++){
          if (form1.email.value.charAt(j)==".")
             break;
          
        }
        if (i==form1.email.value.length||i>j||j==form1.email.value.length){
           alert("非法Email地址!");
           form1.email.focus();
           return false;
        }
      }
      else{
        alert("请输入Email地址");
        form1.email.focus;
        return false;
      }
    则完全欧了
      

  11.   

    javascript没有int类型所有类型都是var定义int直接用 var a = b = 0 ;另外for循环时,循环变量也要使用(for var i=0; i<length; i++)的形式
      

  12.   

    楼上眼睛好^^
    有一次我也是定义了int,最后一句一句alert看错在哪句。
    JAVA写多了^^