javascript下阻止表单重复提交、防刷新、防后退

[b]1 服务器端的解决方法。这是我最为推荐的方法。优点是判断准确,兼容性最大。 [/b]
做法:a页面显示表单,然后提交b页面处理,处理完后重定向到c页面显示结果。
1.0 在访问a页面时在session里生成一个标志ID,例如
//伪代码 
session("submitID")=random()
然后把这个值写到表单的一个hidden的input里
//伪代码
<%response.write("<input name=submitID2 type=hidden value=\""+session("submitID")+"\">")%>

1.1 b页面处理时判断表单所提交的submitID2的值是否和session中的submitID一致,不一致的话重定向到报错页面,一致的话把session中的submitID清空然后进行表单处理
//伪代码 
session("submitID")=""
//然后处理提交......

处理完成后重定向到c页面
1.2 c页面其实就没什么好说的了,就是一个显示处理结果的页面。

[b]2 客户端用js解决[/b]
这种方法不好,因为必然会遇到不同浏览器的兼容性问题,而且是必然可以绕过的。唯一的优点就是简单,不需要太多的编码
2.0 防止后退
在每个页面的最顶上加上这个代码
<script>window.history.forward();</script> 

2.1防止刷新
我很难想到什么好方法可以做到。因为要屏蔽的地方太多了。只好采用一种很烂的方法:
<body onunload="location='about:blank'>"  


方法2:
防止误刷新页面

  window.onbeforeunload = function(){
return "您正要离开本页面,您所做的所有的修改都会丢失,确定么?";
};

正常提交时,还得屏掉。

 frm.onsubmit = function(){

window.onbeforeunload = null;

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值