javascript 防止重複提交

來源:互聯網
上載者:User
很多時候我們都需要防止重複提交,這方面的文章也比較多,實現的途徑差別也很大.以下是我寫的一種控制提交的方式.因為有些時候即使伺服器能夠識別重複的提交,也會造成問題.比如需要很長等待時間的操作,在首次提交後,不斷重複提交,頁面可能會死掉.用指令碼來控制的話可以防止這種問題.當然也可以指令碼和伺服器都進行控制,這樣就比較完美了.
    閑話少說,將以下指令碼放置於頁面頂部.

 1document.IsPosted = false;
 2function CancelDubSubmit()
 3{ 
 4    if ((typeof(event.returnValue) == "undefined" || event.returnValue== true) && !document.IsPosted)
 5    { 
 6        document.IsPosted = true;
 7        event.returnValue = true;
 8    }
 9    else
10    {          
11        event.returnValue = false;
12    }
13}

以下加粗部分放置於form標籤中,如果你已經有了onsubmit事件的其他執行函數,可以放在一起,最好將CancelDubSubmit()函數放在最後.<form id="Form1" onsubmit="CancelDubSubmit();" method="post" runat="server">

    其中document.IsPosted是為了記錄是否回送.一旦頁面回送,document.IsPosted將為true. 重新載入後,document.IsPosted=false將被執行.當onsubmit事件沒有其他執行函數或者其他執行函數返回true並且document.IsPosted=false時,回送頁面,否則停止回送.
    以上方法不能控制使用 function __doPostBack() 函數的伺服器端控制項.因為在此函數中的提交是靠 document.Form1.submit() 實現的,它不會觸發Onsubmit事件.那麼我們還需要重寫__doPostBack() 函數.function __doPostBack(eventTarget, eventArgument) {
    if (!document.IsPosted)
        {
        var theform;
        if (window.navigator.appName.toLowerCase().indexOf("netscape") > -1) {
            theform = document.forms["Form1"];
        }
        else {
            theform = document.Form1;
        }
        theform.__EVENTTARGET.value = eventTarget.split("$").join(":");
        theform.__EVENTARGUMENT.value = eventArgument;    
        
        document.IsPosted = true;
        theform.submit();
        }
    }

請將以上代碼放置於頁面的原__doPostBack() 函數之後.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.