两段代码的区别不知道在哪,一个可以验证,一个却直接跳转了,验证不起作用,不知道什么原因(开发工具myeclipse8.6)
验证无效代码<%@ page language="java" import="java.util.*"
contentType="text/html; charset=gb2312" pageEncoding="gb2312"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<%
request.setCharacterEncoding("gb2312");
%>
<%
response.setCharacterEncoding("gb2312");
%><!-- 解决页面乱码问题 -->
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>欢迎注册</title>
</head>
<body text="rgb(255,255,0)"
background="D:\My Documents\图片收藏\空间设计素材\空间皮肤\blog4.jpg">

<form action="servlet/submit" method="post" name="form1"
onsubmit="return on_submit(this)">
<table width="700" height="245">
<tr>
<td width="400">
&nbsp;
</td>
<td>
新用户注册:
<br>
</td>
<td>
&nbsp;
</td>
</tr>
<tr>
<td width="400">
&nbsp;
</td>
<td>
用户名(*):
</td>
<td>
<input type="text" name="username" />
<br>
</td>
</tr>
<tr>
<td width="400">
&nbsp;
</td>
<td>
密&nbsp;码(*):
</td>
<td>
<input type="password" name="password" />
<br>
</td>
</tr>
<tr>
<td width="400">
&nbsp;
</td>
<td>
确认密码(*):
</td>
<td>
<input type="password" name="repassword" />
<br>
</td>
</tr>
<tr>
<td width="400">
&nbsp;
</td>
<td>
性&nbsp;别:
</td>
<td>
<input type="radio" name="sex" value="男">

<input type="radio" name="sex" value="女">

<br>
</td>
</tr>
<tr>
<td width="400">
&nbsp;
</td>
<td>
出生年月:
</td>
<td>
<input type="text" name="year" size="4">

<select name="month">
<option value="1" selected>
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">

</td>
</tr>
<tr>
<td width="400">
&nbsp;
</td>
<td>
电子邮箱(*):
</td>
<td>
<input type="text" name="e-mail">
</td>
</tr>
<tr>
<td width="400">
&nbsp;
</td>
<td>
联系方式:
</td>
<td>
<input type="text" name="tel">
</td>
</tr>
<tr>
<td width="400">
&nbsp;
</td>
<td>
<input type="submit" value="注册">
</td>
<td>
<input type="reset" value="取消">
</td>
</tr>
</table>
<br>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
<%=new Date()%>
</p>
</form>

<script type="text/javascript">
function on_submit(form1) {
//验证数据合法性
if (form.username.value == "") {
alert("用户名不能为空!");
return false;
//form1.username.foucs();
}
if (form1.password.value == "") {
alert("密码不能为空");
return false;
//form1.password.foucs();
}
if (form1.password.value != form1.repassword.value) {
alert("密码不一致");
return false;
//form1.repassword.foucs();
}
if(form1.e-mail.value.length!=0){
   for(int i=0;i<=form1.e-mail.value.length;i++)
       if(form1.e-mail.value.charAt(i)=="@")
       break;
       if(i==form1.e-mail.value.length
       {
       alert("非法email");     
       return false;
       //form1.e-mail.focus();
       }
}
else{
alert("请输入email");
return false;
//form1.e-mail.focus();
}
}
</script>
</body>
</html>验证有效代码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'register.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>

<body>
<form action="UserRegister" name="form" method="post"
onsubmit="return checkForm(this)">
<table width="60%" border="1">
<tr>
<td>
<div align="center">
<font>用户登陆</font>
</div>
</td>
</tr>
<tr align="left">
<td>
用户帐号:
<input type="text" name="userid">
</td>
</tr>
<tr align="left">
<td>
密&nbsp;&nbsp;码:
<input type="password" name="userpassword">
</td>
</tr>
<tr align="left">
<td>
密码验证:
<input type="password" name="reuserpassword">
</td>
</tr>
<tr align="left">
<td>
性&nbsp;&nbsp;别:
<input type="radio" name="unit" checked value="M">

<input type="radio" name="unit" value="FM">

</td>
</tr>
<tr align="left">
<td>
姓名:
<input type="text" name="username">
</td>
</tr>
<tr align="left">
<td>
出生年月:
<input type="text" name="userbirthday"
onchange="return checkdate()">
(格式:年-月-日)
</td>
</tr>
<tr align="left">
<td>
找回密码:
<input type="password" name="userfindpassword">
</td>
</tr>
<tr></tr>
<tr align="left">
<td>
邮箱:
<input type="text" name="usermail">
</td>
</tr>
<tr align="center">
<td>
<input type="submit" value="注册" onclick="false">
</td>
</tr>
</table>
</form> <script type="text/javascript">function checkForm(form) {
if (form.userid.value == "") {
alert("用户名不能为空!");
return false;
} else if (form.userpassword.value == "") {
alert("密码不能为空!");
return false;
} else if (form.userpassword.value != form.reuserpassword.value) {
alert("密码输入不一致!");
return false;
} else if (form.username.value == "" || form.userbirthday.value == ""
|| form.userfindpassword.value == "" || form.usermail.value == "") {
alert("有属性为空,请填写完整!");
return false;
}
}/*function checkdate() {
var sYMD = document.form.userbirthday.value.split("-");
var sDate = new Date(parseInt(sYMD[0], 10), parseInt(sYMD[1], 10) - 1,
parseInt(sYMD[2], 10));
if (!(document.form.userbirthday.value == sDate.getFullYear() + "-"
+ (sDate.getMonth() + 1) + "-" + sDate.getDate())) {
alert("发文时间必须是合法日期!");
document.form.userbirthday.focus();
return false;
} else {
return true;
}
}*/
</script>
</body>
</html>

解决方案 »

  1.   

    function on_submit(form1) {
        //验证数据合法性
        if (form.username.value == "") {
            alert("用户名不能为空!");
            return false;
            //form1.username.foucs();
        }上面那个js验证中  对于用户的验证 判断form.username.value是否为空   而传进的参数却为form1  不知道是不是这个问题  当你在验证用户名的时候  就出现问题了  其它的应该都可以的吧
      

  2.   

    第一个if……if……每一个都要去判断,第二个if……else if……只要其中一个条件为真,就return false了……相当于只判断了一个……
      

  3.   

    呵呵,真没看出来,不过初步怀疑是<input type="submit" value="注册" onclick="false">
    这句
      

  4.   

     //验证数据合法性
        if (form.username.value == "") {
            alert("用户名不能为空!");
            return false;
            //form1.username.foucs();
        }那个form找不到对象,会抛错,只要改成form1或者改成<form action="servlet/submit" method="post" name="form"  onsubmit="return on_submit(this)"> 应该就行了!
      

  5.   

    javaScript代码不一样··好好检查一下··