天天看點

Asp.net防止頁面被多次送出

出處:http://blog.csdn.net/teng_s2000/archive/2005/10/17/505928.aspx

此處提供的代碼用來實作當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的.