zoukankan      html  css  js  c++  java
  • [转]防止页面被多次提交

      作者:bestcomy 来自:博客园
    此处提供的代码用来实现当asp.net页面中的某个Button被点击后disable掉该页面中所有的Button,从而防止提交延时导致的多次提交。基于之前的onceclickbutton脚本.


    <
    script language="javascript">
            
    <!--        
            
    function disableOtherSubmit()
            {            
    var obj =
     event.srcElement;
                
    var objs =
     document.getElementsByTagName('INPUT');
                
    for(var i=0; i<objs.length; i++
    )
                {
                    
    if(objs[i].type.toLowerCase() ==
     'submit')
                    {
                        objs[i].disabled 
    = true
    ;
                    }
                }      
             }
                
            
    //-->

            </script>
    public class PreventMultiClick : System.Web.UI.Page
        {
            
    protected
     System.Web.UI.WebControls.Button Button1;
            
    protected
     System.Web.UI.WebControls.Button Button2;
            
    protected
     System.Web.UI.WebControls.LinkButton LinkButton1;
            
    protected
     System.Web.UI.WebControls.Button Button3;
        
            
    private void Page_Load(object
     sender, System.EventArgs e)
            {
                
    this.GetPostBackEventReference(this.Button3);        //保证 __doPostBack(eventTarget, eventArgument) 正确注册

                if(!IsPostBack)
                {
                    System.Text.StringBuilder sb 
    = new
     System.Text.StringBuilder();
                    sb.Append(
    "if (typeof(Page_ClientValidate) == 'function') { if (Page_ClientValidate() == false) { return false; }}");    //保证验证函数的执行

                    sb.Append("if(window.confirm('are you sure?')==false) return false;");        //自定义客户端脚本
                    sb.Append("disableOtherSubmit();");        // disable所有submit按钮
                    sb.Append(this.GetPostBackEventReference(this.Button3));    //用__doPostBack来提交,保证按钮的服务器端click事件执行
                    sb.Append(";");
                    Button3.Attributes.Add(
    "onclick"
    ,sb.ToString());
                }
            }

            
    #region Web Form Designer generated code

            
    override protected void OnInit(EventArgs e)
            {
                
    //

                
    // CODEGEN: This call is required by the ASP.NET Web Form Designer.
                
    //
                InitializeComponent();
                
    base
    .OnInit(e);
            }
            
            
    /// <summary>

            
    /// Required method for Designer support - do not modify
            
    ///
     the contents of this method with the code editor.
            
    /// </summary>

            private void InitializeComponent()
            {    
                
    this.Button3.Click += new System.EventHandler(this
    .Button3_Click);
                
    this.Load += new System.EventHandler(this
    .Page_Load);

            }
            
    #endregion


            
    private void Button3_Click(object sender, System.EventArgs e)
            {
                System.Threading.Thread.Sleep(
    3000
    );
                Response.Write(
    "Hello world!"
    );
            }
        }

    此处只是disable掉所有的submit button, 我觉得其它的可提交控件也是可以通过类似的方法来disable的.
  • 相关阅读:
    WF4.0 Beta1 自定义跟踪
    WF4.0 Beta1 流程设计器与Activity Designer
    新版本工作流平台的 (二) 权限算法(组织结构部分)
    WF4.0 Beta1 WorkflowInvoker
    WF4.0 基础篇 (十) Collection 集合操作
    WF4.0 基础篇 (十五) TransactionScope 事物容器
    WF4.0 基础篇 (六) 数据的传递 Arguments 参数
    WF4B1 的Procedural Activity 之InvokeMethod , InvokeMethod<T> 使用
    WF4.0 Beta1 异常处理
    WF4.0 Beta1 变量 Variables
  • 原文地址:https://www.cnblogs.com/symbol441/p/910408.html
Copyright © 2011-2022 走看看