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没有起到作用,哪里出错
_____________
<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没有起到作用,哪里出错
改成这样的:
var name=document.getElementsByName("user.username")[0];另外你数字的验证似乎有误:if(ch>"9"||ch<"0"){
应该是 if(ch<"9"||ch>"0"){
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;
}
var name=document.form.elements("user.username").value;
其他的可以按照以上的来改,主要是这个问题。
onSubmit="return check();"
<%@ 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>
这个获得焦点是为执行false用的嘛?
<input type="submit" value="提交">建议将这个改为type="button"
将onsubmit触发的事件,改为此button的onclick触发。在方法中提交form。