日期:2014-05-16  浏览次数:20421 次

history.go(-1)后button失效
用户注册时,需要提前验证用户名是否存在,于是我在注册表单项用户名的后面添加了一个CHECK按钮,代码为:
<button id="usernameCheck" type="button" onclick="eventHandler(event);">CHECK</button> <!-- requestSrc=2 -->

而在响应函数中再将用户名转交给一个servlet(转发)处理,eventHandler(event)代码如下:
function eventHandler(eventSrc) {
eventSrc=eventSrc || window.event;
var target=eventSrc.target || eventSrc.srcElemnt;

switch(target.getAttribute("id")) {
case "usernameCheck":
if(elementValidation(document.getElementById("username"))){
var username=document.getElementById("username").value;
this.location="../action/ActionController?requestSrc=2&username="+username;
}
break;
default:
break;
}
}

然后servlet ActionController再将请求转发到一个检查用户名是否存在的jsp处理,servlet中转发代码如下:
request.getRequestDispatcher("register.jsp").forward(request, response); 

之后,register.jsp访问数据库并检查用户名是否存在,在这里访问数据库之后,我用history.go(-1); 退回到最开始的注册界面,同时alert通知用户检查结果。这一切都正常。

问题是,退回原始注册界面后,CHECK按钮不能再次使用了,即用户重新输入后再点按CHECK,它拒绝再次产生event,根本不调用eventHandler(event);(此时,表单上其它按钮如reset和submit仍然可用)。实在不知道为什么,请高手指点一二,感激不尽。
history.go(-1) ?button失效

------解决方案--------------------
改ajax来验证,firefox会记录上一次表单状态的,无法还原表单状态,IE没问题