<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();">哪位大哥,帮我解释一下上面的代码,

解决方案 »

  1.   


    <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();">
    如果上面讲解有误欢迎各位大虾提出!
      

  2.   

    http://dev.csdn.net/article/85/85046.shtm  
    对于重复提交、重复刷新、防止后退等等都是属于系统为避免重复记录而需要解决的问题,在客户端去处理需要针对每一种的可能提出相应的解决方案,然而在服务器端看来只不过是对于数据真实性的检验问题,基于令牌的处理就是一劳永逸的方法。
      

  3.   

    整体看起来貌似判断重复提交的
        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; 
       } 
      

  4.   


       document.ondblclick = function docondblclick() { 
        window.event.returnValue = false; 
       } //禁用双击?....有用么?
      

  5.   


    不是 俺的意思是 你光在提交方法里验证就行了被 何必在document里验证呢? 或者将范围缩小到form也行啊
      

  6.   

    上面回答完全正确。最安全的方法还是作用到document 上