谢谢回答问题的大牛,感激不尽
问题就是我运行的时候js只会提示用户名没输入。假如我用户名输入了,其他没输入的时候,js却没有报错<%@ page language="java" contentType="text/html; charset=gb2312"%>
<html>
<head>
<title>用户注册</title>
<style type="text/css">
.center {
text-align: center;
}.red {
color: #F00;
}
</style>
<script language="javascript">
function on_submit() {
if (form1.username.value == "") {
alert("用户名不能为空!请输入用户名!");
form1.username.focus();
return false;
}
if (form1.passward.value == "") {
alert("用户密码不能为空!请输入用户密码!");
form1.passward.focus();
return false;
}
if (form1.repassward.value == "") {
alert("用户确认密码不能为空!请输入用户确认密码!");
form1.repassward.focus();
return false;
}
if (form1.repassward.value != form1.passward.value) {
alert("两次密码输入不一致!请重新输入!");
form1.passward.focus();
return false;
}
if (form1.email.value.length != 0) {
for (i = 0; i < form1.email.value.length; i++) {
if (form1.email.value.charAt(i) == "@") {
break;
}
}
if (i == form1.email.value.length) {
alert("输入的电子邮箱地址非法!请重新输入!");
form1.email.focus();
return false;
} } else {
alert("电子邮箱不能为空!请输入电子邮箱!");
form1.email.focus();
return false;
}
}
</script>
</head>
<body> <form method="post"
enctype="multipart/form-data" name="form1"
onSubmit="return on_submit()">
<table width="100%" border="0">
<tr>
<td colspan="2" class="center">用户注册</td>
</tr>
<tr>
<td width="11%">用户名:<span class="red">(*)</span></td>
<td width="89%"><input type="text" name="username"></td>
</tr>
<tr>
<td>密 码:<span class="red">(*)</span></td>
<td><input name="password" type="password"></td>
</tr>
<tr>
<td>确认密码:<span class="red">(*)</span></td>
<td><input name="repassword" type="password"></td>
</tr>
<tr>
<td>性 别:</td>
<td><input type="radio" name="sex" value="男" select> 男 <input
type="radio" name="sex" value="女"> 女</td>
</tr>
<tr>
<td>出生年月:</td>
<td><label for=""></label> <input type="text" size="4"
maxlength="4" name="year">年 <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" size="3" maxlength="3" name="day"> 日</td>
</tr>
<tr>
<td>电子邮箱:<span class="red">(*)</span></td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<td>家庭住址:</td>
<td><input type="text" name="address"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="submit" id="button"
value="提交"> <input type="reset" name="button2" id="reset"
value="重置"></td>
</tr>
</table>
</form></body>
</html>

解决方案 »

  1.   

    经过测试<input name="password" type="password">这种类型的标签无法通过form1.passward.value这种方式获取值
    建议改为用document.getElementById('password').value来获password的值   当然<input name="password" type="password">要加上id<input name="password" type="password" id="password">
      

  2.   

    form1.email.value.charAt(i) == "@"是不是应该写成form1.email.value.charAt(i) == ’@‘
      

  3.   

    id是唯一的   name不一定
      

  4.   

    现在问题是我就算把js的验证去掉,在acceptUserRegist.jsp页面上还是现实null<%@ page language="java" contentType="text/html; charset=gb2312"%>
    <html>
    <head>
    <title>Insert title here</title>
    </head>
    <body>
    <%--
    request.setCharacterEncoding("gb2312");
    --%>
    <%
    out.println(request.getParameter("username"));
    %>
    </body>
    </html>
      

  5.   

    你是要实现注册完成 跳转到另一个页面?
     <form method="post"
            enctype="multipart/form-data" name="form1"
            onSubmit="return on_submit()">你的form没有指定跳转的指定页面,加上action='aaa.jsp'
    吧enctype="multipart/form-data"删掉  这个属性在上传文件的时候才会用到
      

  6.   

    我加了也没有,我现在做了一个测试。
    form.jsp<%@ page language="java" contentType="text/html; charset=gb2312"%>
    <html>
    <head>
    <title>Insert title here</title>
    </head>
    <body>
    <form action="acceptUserRegist.jsp" method="post" name="form1">
    <input name="username" type="text" id="username" >
    <input name="submit" type="button" value="提交"></form>
    </body>
    </html>acceptUserRegist.jsp<%@ page language="java" contentType="text/html; charset=gb2312"%>
    <html>
    <head>
    <title>Insert title here</title>
    </head>
    <body>
    <%--
    request.setCharacterEncoding("gb2312");
    --%>
    <%
    out.println(request.getParameter("username"));
    %>
    </body>
    </html>
      

  7.   

    我测了一下 当type=password的时候有点问题,当type=text的时候用form1.name.value的时候,是没问题
      

  8.   

    id在标准DOM模型中是用于定义整个文档中唯一的一个元素的(你可以理解为某个元素的唯一的名字),而name是可以定义多次的(你可以理解为昵称),当使用JAVASCRIPT获取文档对象模型中(DOM)的某个元素时,如果页面中存在多个相同id的元素,那么就会造成程序错误,因为程序无法找到唯一的那个元素。而用JAVASCRIPT找name元素就可以找到多个拥有共同name属性的元素,并把这些属性保存到设置的对象中,使用时可以通过该对象的索引获取相应的对象内部成员,其具体用法,你可以查询DOM的一些教程。