• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    防止在服务器处理完成之前用户多次点击提交按钮处理代码
    POST TIME:2021-10-18 03:10

    如果网页速度过慢或者其他原因,用户多次提交能导致数据的修改,怎么解决这个问题呢?
    这段是放在 Page_Load 中

    复制代码 代码如下:

    if(!Page.IsPostBack)
    {
    System.Text.StringBuilder s = new System.Text.StringBuilder();
    s.Append("a();");
    s.Append(this.GetPostBackEventReference(this.Button1));
    this.Button1.Attributes.Add("onclick",s.ToString());
    }
    a() 是 JS
    function a()
    {
    var ok=document.getElementById('Button1');
    ok.disabled = true;
    return true;
    }

    浓缩后即为
    复制代码 代码如下:

    btnSave.Attributes.Add("onclick","this.disabled='true';"+GetPostBackEventReference(btnSave));

    一个问题稍微困扰了一下,后来解决了,btnSave.Attributes.Add("onclick","a();"+GetPostBackEventReference(btnSave)); 如果a()这个函数还包含其他验证,比如说一些正则验证等,btnSave.Attributes.Add("onclick","return a();"+GetPostBackEventReference(btnSave)); 则不能进行。可以将JS代码全部在CS文件中写就OK拉。
    复制代码 代码如下:

    System.Text.StringBuilder s = new System.Text.StringBuilder(); s.Append("var ok=document.getElementById('Button1'); ");
    s.Append("ok.disabled = true; ");
    s.Append(this.GetPostBackEventReference(this.Button1));
    this.Button1.Attributes.Add("onclick",s.ToString());
    //.net 2.0以上
    Button1.Attributes.Add("onclick", "this.disabled=true;" + this.ClientScript.GetPostBackEventReference(Button1, ""));


    复制代码 代码如下:

    asp:Button ID="btnSumbit" runat="server" UseSubmitBehavior="false" OnClientClick="this.value='Sumbit';this.disabled=true; " Text="Sumbit" OnClick="btnSumbit_Click" />

    其他的方法(可供尝试)
    方法一
    复制代码 代码如下:

    protected void Page_Load(object sender, EventArgs e)
    {
    btn.Attributes.Add("onclick", "state=true;");
    StringBuilder sb = new StringBuilder();
    sb.Append("if (!state) return;");
    sb.Append("var button=document.getElementByIdx_x('btn');");
    sb.Append("button.value='Please Wait...';");
    sb.Append("document.body.style.cursor='wait';");
    sb.Append("button.disabled=true;");
    string strScript = "script>";
    strScript = strScript + "var state=false;";
    //将函数绑定到页面的onbeforeunload事件:
    strScript = strScript + "window.attachEvent('onbeforeunload',function(){" + sb.ToString() + "});";
    strScript = strScript + "/" + "script>";
    Page.RegisterStartupScript("onbeforeunload", strScript);
    }
    protected void Submit_Click(object sender, EventArgs e)
    {
    //模拟长时间的按钮处理
    System.Threading.Thread.Sleep(2000);
    Response.Write("script>alert('bbbbbb!!');" + "/" + "script>");
    }
    asp:Button ID="btn" Text="Submit" OnClick="Submit_Click"
    runat="server"/>

    方法2
    复制代码 代码如下:

    asp:button id="btnSubmit" OnClick="Submit_Click" runat="server" OnClientClick="this.disabled=true;this.form.submit();" UseSubmitBehavior="False"/>

    方法3
    复制代码 代码如下:

    this.btnSubmit.Attributes["onclick"]=this.GetPostBackEventReference(this.btnSubmit)+";this.disabled=true;";//防止重复提交

    您可能感兴趣的文章:
    • JS防止用户多次提交的简单代码
    上一篇:VC用Ado接口连接和使用数据库及注意事项
    下一篇:asp.net 实现下拉框只读功能
  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信