描述:就是单击申请按钮时候验证密码是否一致,邮箱是否合法;
      如果正确了提交表单信息!不正确的话弹出窗口提示~~(本人遇到的问题是,单击按钮无任何反应~)
代码如下——<%@ page language="java" contentType="text/html; charset=GBK"
    pageEncoding="GBK"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>register.jsp</title><script language="javaScript">
     var p=document.myform.password.value;
     var rp=document.myform.rpassword.value;
     var e=document.myform.email.value;
     var check=false;
         
     function check()//验证密码和邮箱
     {
         if(check)
         {
               if(!p.equals(rp))
              {
                alert("两次输入的密码不一致,请重新输入!");
                check=true;
              }
          
              if(e.indexOf("@")=-1)
             {
                alert("邮箱验证不合法,请重新输入!");
                check=true;
        
             }
         
             if(!p.equals(rp)&&e.indexOf("@")=-1)
            {
                alert("两次输入的密码不一致,请重新输入!\n"+"邮箱验证不合法,请重新输入!");
                check=true;
         
            }
         } 
         
         
          else
         {
            myform.submit();
         }
         
                  
   }
     
</script>
</head>
<body>
<font size="5">用户注册</font><br>
<form action="adduser.jsp" name="myform">
用户名<input type="text" name="user">*<br>
密码<input type="password" name="password">*<br>
密码确认<input type="password" name="rpassword">*<br>
电子邮件<input type="text" name="email" >*<br>
问题<select name="question">
                <option selected value="你最爱的宠物">你最爱的宠物</option>
                <option value="你父亲的名字">你父亲的名字</option>
                <option value="你母亲的名字">你母亲的名字</option>
                <option value="你最爱的人是">你最爱的人是</option>
                <option value="你最爱的植物">你最爱的植物</option>
                <option value="你最喜欢的动画片">你最喜欢的动画片</option>
            </select><br>
回答<input type="text" name="answer" ><br><input type="button" name="submit" value="申请" onclick="check()">
        <input type="reset" name="reset" value="取消"><br>
</form></body>
</html>

解决方案 »

  1.   

    首先在check函数的最前面加上一个alert,看看能不能进入函数,其次隔行打印
      

  2.   

    我怀疑就没有调用到函数,不行改成这样onclick="javascript:check()"
      

  3.   


    <font size="5">用户注册</font><br>
    <form action="adduser.jsp" name="myform">
    用户名<input type="text" name="user">*<br>
    密码<input type="password" name="password">*<br>
    密码确认<input type="password" name="rpassword">*<br>
    电子邮件<input type="text" name="email" >*<br>
    问题<select name="question">
      <option selected value="你最爱的宠物">你最爱的宠物</option>
      <option value="你父亲的名字">你父亲的名字</option>
      <option value="你母亲的名字">你母亲的名字</option>
      <option value="你最爱的人是">你最爱的人是</option>
      <option value="你最爱的植物">你最爱的植物</option>
      <option value="你最喜欢的动画片">你最喜欢的动画片</option>
      </select><br>
    回答<input type="text" name="answer" ><br><input type="button" name="submit" value="申请" onclick="check()">
      <input type="reset" name="reset" value="取消"><br>
    </form>
    <script language="javaScript">
        
      function check()//验证密码和邮箱
      {
    //放在外面的话,则页面载入时就赋值为默认的"";
    //放在里面的话,点按钮的时候才赋值
      var p=document.myform.password.value;
      var rp=document.myform.rpassword.value;
      var e=document.myform.email.value;   if (!document.myform.user.value || !p || !rp || !e)
      {
      alert("请将带*的项目填写完整!");
      return false;
      }
      if( p != rp && e.indexOf("@") == -1) //需放在if( p != rp )和if(e.indexOf("@") == -1)前面,不然永远也不会进入此if
      {
      alert("两次输入的密码不一致,请重新输入!\n"+"邮箱验证不合法,请重新输入!");
      return false;
      }
      if( p != rp ) //js中没有equals
      {
      alert("两次输入的密码不一致,请重新输入!");
      return false;
      }
      if(e.indexOf("@") == -1) //比较应用==而不是=
      {
      alert("邮箱验证不合法,请重新输入!");
      return false;
      }
      //上面的全部通过了才会到这里
      alert("OK");
      //myform.submit();
      }
    </script>
      

  4.   

    另,用正则表达式验证
    <font size="5">用户注册</font><br>
    <form action="adduser.jsp" name="myform">
    用户名<input type="text" name="user">*<br>
    密码<input type="password" name="password">*<br>
    密码确认<input type="password" name="rpassword">*<br>
    电子邮件<input type="text" name="email" >*<br>
    问题<select name="question">
      <option selected value="你最爱的宠物">你最爱的宠物</option>
      <option value="你父亲的名字">你父亲的名字</option>
      <option value="你母亲的名字">你母亲的名字</option>
      <option value="你最爱的人是">你最爱的人是</option>
      <option value="你最爱的植物">你最爱的植物</option>
      <option value="你最喜欢的动画片">你最喜欢的动画片</option>
      </select><br>
    回答<input type="text" name="answer" ><br><input type="button" name="submit" value="申请" onclick="check()">
      <input type="reset" name="reset" value="取消"><br>
    </form>
    <script language="javaScript">
        
      function check()//验证密码和邮箱
      {
      var u=document.myform.user;
      var p=document.myform.password;
      var rp=document.myform.rpassword;
      var e=document.myform.email;
      var reg = /^\w{6,}$/
      var reg_e = /^\w+@\w+\.\w+$/   if (!u.value || !p.value || !rp.value || !e.value)
      {
      alert("请将带*的项目填写完整!");
      return false;
      }
      if (!reg.test(u.value)) {
    alert("用户名:由数字字母下划线组成,长度6位或以上");
    u.select();
    return false;
      }
      if (!reg.test(p.value)) {
    alert("密码:由数字字母下划线组成,长度6位或以上");
    p.select();
    return false;
      }
      if( p.value != rp.value )
      {
      alert("两次输入的密码不一致,请重新输入!");
      rp.select();
      return false;
      }
      if (!reg_e.test(e.value)) {
    alert("邮箱验证不合法,请重新输入!");
    e.select();
    return false;
      }   //上面的全部通过了才会到这里
      alert("OK");
      //myform.submit();
      }
    </script>
      

  5.   

    你在代码行中,隔行添加alert()打出不同的信息
    类似:
    alert("1");
    //代码行
    alert("2");
    //代码行
    alert("3");
    //代码行
    alert("4");
    //代码行------------------------
    看下代码执行到了哪个alert,然后就是那个alert下面的代码有问题了呗
    不能一眼看出问题所在,只有慢慢调试了
      

  6.   

    LZ是新建了个页面然后把3楼的代码贴进去的吗?
    LZ在定义变量的时候定义了个check,然后函数名也叫check(),所以一运行就报错
    我把那个变量check删了的说……
      

  7.   

    楼主的代码在被加载到时候就出错了,出错的地方在
      var p=document.myform.password.value;
      var rp=document.myform.rpassword.value;
      var e=document.myform.email.value;
      var check=false;
    因为首次执行到这里的时候页面还没有被加载完成,所以document.myform或者document.myform.password为null,另外document.myform.password的写法是不提倡的,因为不是所有的浏览器都对这种写法支持的很好,正确的写法是document.getElementById("xxxxx").最后,楼主的代码存在逻辑错误,应该是每次check的时候都重新读取input box的值来做判断,所以上述代码片段应该在check()内。