初来乍到~~帮忙看看这个简单的程序实现代码问题!

csyd1101 2010-05-28 02:21:13
描述:就是单击申请按钮时候验证密码是否一致,邮箱是否合法;
如果正确了提交表单信息!不正确的话弹出窗口提示~~(本人遇到的问题是,单击按钮无任何反应~)


代码如下——

<%@ 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>
...全文
87 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
csyd1101 2010-05-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 boliang319 的回复:]
楼主的代码在被加载到时候就出错了,出错的地方在
var p=document.myform.password.value;
var rp=document.myform.rpassword.value;
var e=document.myform.email.value;
var check=false;
因为首次执行到这里的时候页面还没有被加载完成,所以document……
[/Quote]
刚刚自学这个,很多不明白的,谢谢指导!!!
csyd1101 2010-05-30
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zyzy15 的回复:]
引用 6 楼 csyd1101 的回复:
引用 3 楼 zyzy15 的回复:
HTML code

<font size="5">用户注册</font><br>
<form action="adduser.jsp" name="myform">
用户名<input type="text" name="user">*<br>

很离奇的,我试验了一下,还是没有任何反应吖!!!杯具了……
[/Quote]刚刚试验了一下,执行成功了!!!谢谢你了,大好人,解释的很详细呢!!!
boliang319 2010-05-28
  • 打赏
  • 举报
回复
楼主的代码在被加载到时候就出错了,出错的地方在
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()内。
zyzy15 2010-05-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 csyd1101 的回复:]
引用 3 楼 zyzy15 的回复:
HTML code

<font size="5">用户注册</font><br>
<form action="adduser.jsp" name="myform">
用户名<input type="text" name="user">*<br>

很离奇的,我试验了一下,还是没有任何反应吖!!!杯具了。。。。。。
[/Quote]
LZ是新建了个页面然后把3楼的代码贴进去的吗?
LZ在定义变量的时候定义了个check,然后函数名也叫check(),所以一运行就报错
我把那个变量check删了的说……
sillyfish521 2010-05-28
  • 打赏
  • 举报
回复
你在代码行中,隔行添加alert()打出不同的信息
类似:
alert("1");
//代码行
alert("2");
//代码行
alert("3");
//代码行
alert("4");
//代码行

------------------------
看下代码执行到了哪个alert,然后就是那个alert下面的代码有问题了呗
不能一眼看出问题所在,只有慢慢调试了

csyd1101 2010-05-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zyzy15 的回复:]
HTML code

<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="passwo……
[/Quote]

很离奇的,我试验了一下,还是没有任何反应吖!!!杯具了。。。。。。
zyzy15 2010-05-28
  • 打赏
  • 举报
回复
另,用正则表达式验证


<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>
csyd1101 2010-05-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lieri111 的回复:]
首先在check函数的最前面加上一个alert,看看能不能进入函数,其次隔行打印
[/Quote]
我尝试了一下,还是没有任何反应吖!!!
zyzy15 2010-05-28
  • 打赏
  • 举报
回复

<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>

passself 2010-05-28
  • 打赏
  • 举报
回复
我怀疑就没有调用到函数,不行改成这样

onclick="javascript:check()"
passself 2010-05-28
  • 打赏
  • 举报
回复
首先在check函数的最前面加上一个alert,看看能不能进入函数,其次隔行打印

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧