通过WEB按钮提交一组数据,结果常常发现数据库中有相同的两组或三组数据。经过查询后发现原来快速点击或者网络速度很慢的时候点击Button两次后就出现这种问题?请问有没有办法解决这种问题,而不需要通过提交数据库中的数据来做判断。

解决方案 »

  1.   

    Button单击事件后设置disabled属性使变灰.
      

  2.   

    中经常会遇到客户没有耐心等待程序执行结果多次点击按钮导致页面被多次提交。
    其实有一简单解决方法:
    页面中加入:
      <form onsubmit="return CheckFormSubmit();">
      .....
      </form>
      <script>
      var IsSubmited = false;
      function CheckFormSubmit()
      {
       if(IsSubmited==true) return false; //如果为正在提交状态,则不允许再次提交
       IsSubmited = true;   //更改为提交状态
       return true;
      }
      </script>
      

  3.   

    事件提交后,将button 事件屏蔽
      

  4.   

    asp.net中是有这样的情况,各个方法都有试过,但都不尽人意,最好在页面上对提交按钮事件做控制,在程序里也对数据作验证,发现已经执行过则不再执行
      

  5.   

    按钮执行事件之后执行一段JS
    window.location.href=window.location.href
      

  6.   

    在添加 按钮的最后
    加上 Resonse.Redirect(本页)
      

  7.   

    执行完成后重新装载一下本页,如下:
    Response.Write("<script language='javascript'>window.location.href=window.location.href;</script>");也可以重定向到其他页面
      

  8.   

    方法一:当点击Button事件后,首先先执行Button.Enable=false;代码,然后再进行插入操作;
    方法二:当多次提交时,可以在Button事件中先读数据库,检查当前数据在数据库中是否存在,如果有,则弹出窗口告知而不存入数据库,如果没有则存入数据库;
      

  9.   

    如果仅仅是这样,那么在Page_Load里加上
     this.Button1.Attributes.Add("onclick","this.style.display="none";return true;");
    应该可以解决大部分的问题this.style.display="none";这句脚本是纯客户端的,这时还没有发生回传,先把按钮置为不可见,然后才是return true;发生回传...
    至于刷新的问题,只好Resonse.Redirect(本页)当然上面这些都还不够严谨,要更严谨就到后台做吧
      

  10.   

    菜鸟也帮忙提交输入后用客户端脚本清除 WEB控件上输入的数据再次提交会被客户端脚本拦截,原因没有输入完整数据如果没有输入项, 干脆提交后用客户端脚本 disabled 提交按钮,提交成功后再返回到另一提示页面.不知道能不能满足需要,本人菜,有说的不对的地方请见凉
      

  11.   

    脚本:
    function doubleClickCheck(){
      if (window.document.readyState != null &&
        window.document.readyState != 'complete'){
        alert("处理中,请等待");
        return false;
      }
    }
    C#代码
    this.printButton.Attributes["onClick"] = "return  doubleClickCheck()";
    同时禁掉刷新功能,不显示工具栏,禁掉右键菜单