一个很是郁闷的js问题,大神们帮帮忙!

shuhuiguo0915 2011-07-07 10:56:59

// JavaScript Document
reg=true;//全局变量function isValidMail() {
var mail = $('email').value
var display = false;
var password = $('password').value;
var echopassword = $('echopassword').value;
var username = $('username').value;
var code = $('code').value;
var reMail = /^(?:[a-zA-Z0-9]+[_\-\+\.]?)*[a-zA-Z0-9]+@(?:([a-zA-Z0-9]+[_\-]?)*[a-zA-Z0-9]+\.)+([a-zA-Z]{2,})+$/;
var agree = document.all('agree').checked;
if (reMail.test(mail) == false) {

document.getElementById('emailright').style.display = "none";
document.getElementById('emailwrong').style.display = "";
reg=false;
return;
}
if (password == "") {
document.getElementById('passwordright').style.display = "none";
document.getElementById('passwordwrong').style.display = "";
reg=false;
return;
}
if (echopassword == "") {
document.getElementById('echopasswordwrong').style.display = "";
reg=false;
return;
}

if (password == echopassword) {

} else {
document.getElementById('echopasswordwrong').style.display = "";
reg=false;
return;
}
if (username == "") {
document.getElementById('usernameright').style.display = "none";
document.getElementById('usernamewrong').style.display = "";
reg=false;
return;
}
if (code == "") {
document.getElementById('codewrong').style.display = "";
reg=false;
return;
}
if (agree == false) {
document.getElementById('agreewrong').style.display = "";
reg=false;
return;
} else {
document.getElementById('agreewrong').style.display = "none";
}
reg=true
}
function yan()
{
var name=$('code').value;
Register.yanzheng(name,backto);
}
function backto(boo)
{
if(boo==false)
{
reg=false;
document.getElementById('codewrong').style.display = "";
return;
}

}
function userReg()
{
var username=$('username').value;
Register.usernameReg(username,callback);

}
function callback(date)
{
if(date==true)
{
reg=false;
document.getElementById('usernamewrong').style.display = "";
return;
}

}

function emailReg()
{
var email=$('email').value;
Register.emailReg(email,mailcallback)
}
function mailcallback(date)
{
if(date==true)
{
reg=false;
document.getElementById('emailwrong').style.display = "";
return;
}

}

function getN(ming)
{
return document.getElementsByName(ming)[0];
}
function blue(dom) {
document.getElementById(dom.id + 'wrong').style.display = "none";
document.getElementById(dom.id + 'right').style.display = "";
}
function sub()
{
isValidMail();
if(reg==true)
{
emailReg

userReg();
yan();
if(reg==true)
{

document.registerform.submit();
}
}
}



当我前台第一次提交时候,如果有问题是不能提交的,没问题就提交,但是当我第一次提交完成,我在浏览器里按后提,这时我什么都不修改,又按提交按钮,按照我写的js,这时是不能提交的,因为数据库里面是有相同的数据的,所以我定义了一个全局变量reg来判断,但是问题救出这了,当我又点击提交时,全局变量没有得到值或者没有被修改,但是我js里面已经修改了,不知道什么原因???提交方法是
function sub()
...全文
158 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟子E章 2011-07-07
  • 打赏
  • 举报
回复
ajax要避免缓存,url采用"xx.aspx?tmp=" + (new Date()).valueOf() 避免缓存。
确保你的userReg函数执行了
shuhuiguo0915 2011-07-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 net_lover 的回复:]
页面后退,相当于页面重新初始化,重新执行了,你以前的变量是不会保存的,
要判断数据库是否有数据,你应该在提交代码里ajax去数据库判断,而不是记录在前端的变量里面啊。

另外,后台添加的时候还需要二次判断的,因为前端脚本和提交的数据都有可能使用工具修改的
[/Quote]

但是我再次提交的时候,也会判断啊,我后台数据判断使用用ajax框架判断的,这个方法
function userReg()
,如果用重复值,赋值reg=false,也就是不能提交啊,但是我在uerrReg里面已经赋值false了,但是提交的时候alert,reg还是等于true,为什么呢?reg既然是全局的,我赋值了,值应该改变啊?
灬上海爽爷 2011-07-07
  • 打赏
  • 举报
回复
这时是不能提交的,因为数据库里面是有相同的数据的,所以我定义了一个全局变量reg来判断


为什么不在提交的页面判断,要在前端判断呢。。
又或者说在那个页面应该是不能后退的才对。
孟子E章 2011-07-07
  • 打赏
  • 举报
回复
页面后退,相当于页面重新初始化,重新执行了,你以前的变量是不会保存的,
要判断数据库是否有数据,你应该在提交代码里ajax去数据库判断,而不是记录在前端的变量里面啊。

另外,后台添加的时候还需要二次判断的,因为前端脚本和提交的数据都有可能使用工具修改的
  • 打赏
  • 举报
回复
提交完成,后退的问题,本就应该避免,有很多问题是这样导致的。

方法:用SESSION保存一个数据,在第一次发送到客户端时把这个数据也发到HTML里(存在JS中也行,存在隐藏表单域里也行),提交时将这个数据也提交上去,与SESSION对比,一致就进行操作,在操作完成时马上把SESSION内数据修改。这样的话,如果后台回退回去,则提交的就是上次的数据,与SESSION当前值不同,就不会进行后台入库操作了。
XYM8xym 2011-07-07
  • 打赏
  • 举报
回复
学习了
shuhuiguo0915 2011-07-07
  • 打赏
  • 举报
回复
我在google找了很久,有点说是DWR回调函数赋值全局变量不成功的原因,我想应该是这原因,但是如何解决了,即使我在userReg()里面设置了dwr.engine.setAsync(false); 也不行
shuhuiguo0915 2011-07-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 net_lover 的回复:]
ajax要避免缓存,url采用"xx.aspx?tmp=" + (new Date()).valueOf() 避免缓存。
确保你的userReg函数执行了
[/Quote]
我userReg()肯定被执行了,alert()打印的reg是false,但是我在sub()方法再打印的时候就还是true?
为啥呢?
lsw645645645 2011-07-07
  • 打赏
  • 举报
回复
学习,学习

87,990

社区成员

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

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