<script language="javascript">
var checkSubmitFlg = false;
function checkSubmit() {
if (checkSubmitFlg == true) {
return false;
}
checkSubmitFlg = true;
return true;
}
document.ondblclick = function docondblclick() {
window.event.returnValue = false;
}
document.onclick = function doconclick() {
if (checkSubmitFlg) {
window.event.returnValue = false;
}
}
</script>
form id="ff" name="ff" method="post" action="dim_dimadd.action" onsubmit="return checkSubmit();">哪位大哥,帮我解释一下上面的代码,
<script language="javascript">
var checkSubmitFlg = false;
function checkSubmit() { //检查是否提交过了,防止二次提交表单
if (checkSubmitFlg == true) {
return false;
}
checkSubmitFlg = true;
return true;
}
document.ondblclick = function docondblclick() { //禁止双击事件
window.event.returnValue = false;
}
document.onclick = function doconclick() { //单击,如果表单提交过了,不响应单击事件
if (checkSubmitFlg) {
window.event.returnValue = false;
}
}
</script>
<!--下面是form表单,id为"ff",name为"ff",提交方式为"post",提交到的页面为"dim_dimadd.action",表单在提交之前先进行checkSubmit()检查,通过上面的注释可以看出是为了防止表单二次提交-->
<form id="ff" name="ff" method="post" action="dim_dimadd.action" onsubmit="return checkSubmit();">
如果上面讲解有误欢迎各位大虾提出!
对于重复提交、重复刷新、防止后退等等都是属于系统为避免重复记录而需要解决的问题,在客户端去处理需要针对每一种的可能提出相应的解决方案,然而在服务器端看来只不过是对于数据真实性的检验问题,基于令牌的处理就是一劳永逸的方法。
var checkSubmitFlg = false; //默认为false 看下面
function checkSubmit() {
//如果说checkSubmitFlg 为true的话 则返回true 为什么他会为true呢 请看下面
if (checkSubmitFlg == true) {
return false;
}
checkSubmitFlg = true; //如果说第一次提交的话 checkSubmitFlg 肯定是false 那么脚本能走到这里
//然后让 checkSubmitFlg 变为true 如果用户在提交没结束之前又点了次提交按纽的话(又调用该方法) 他就会根据
//checkSubmitFlg 来判断是否提交过了(这时checkSubmitFlg必然是true 肯定会进入上面的if块里)
return true;
}
document.ondblclick = function docondblclick() {
window.event.returnValue = false;
} //禁用双击?....有用么?
不是 俺的意思是 你光在提交方法里验证就行了被 何必在document里验证呢? 或者将范围缩小到form也行啊