Neo's Blog

首頁 相本 討論 書籤

分類目錄
本站日誌 (51)
碎碎唸啦 (173)
網站架設 (84)
程式設計 (161)
軟體使用 (69)
電子商務 (126)
經營奇想 (48)
基金理財 (11)
聰明消費 (87)
電影心得 (47)
開放原碼 (16)
工作記錄 (2)
毛毛小記 (9)
就是不同 (2)




歷史資料
 




June 14, 2005
[ASP.Net] 用 Javascript 防止表單被重複 Submit 送出

相信很多人都看過這種畫面:

20050614_01.gif

要防止使用者重覆送出資料,「HTML 前端」常見的處理方式是在使用者按下「送出 (submit)」鍵時,直接把按鈕 disabled 設為 true。

當然這邊說的 disabled 是指 HTML 畫面的按鈕 disabled 屬性 ,而非 .Net 按鈕元件的 diabled。

絕大部份的 Web Scripts 做這件事易如反掌,但是在 ASP.Net 就似乎不是那麼簡單了,因為 ASP.Net 的架構是透過層層的 submit 來傳遞參數,如果 disabled 設為 true,也代表著程式會被中斷掉。

因此如果要達到某個按鈕按下去,而且立刻在畫面上呈現 disabled 狀態,可以在 Page_Load 時,設定按鈕的事件:

btnSubmit.Attributes("onclick") = 
"javascript:this.disabled=true;" + 
GetPostBackEventReference(btnSubmit).ToString()

重點在於 GetPostBackEventReference(btnSubmit).ToString() 會在畫面端轉為對應的 Javascript PostBack 函式,如:

__doPostBack(btnSubmit,'')

這樣就能達到使用者 submit 時,按鈕無法再按第二次的功能了。

了解這個原理之後,也可以把這些動作寫在畫面端 (.aspx) 裡面,讓畫面端跟程式端的邏輯更為清楚。

 
由 Neo 發表於 June 14, 2005 12:58 AM 收進你的MyShare個人書籤  

按后退,刷新。就失效了。


qh663 發表於 October 14, 2005 05:37 PM

到了下一頁按下「回上頁」之後,這個被 disabled 的 Button 並不會復原,反而造成無法送出的困擾,如果要做這種效果一定要在 window.onload 事件將該按鈕還原 disabled 的狀態。


Will 保哥 發表於 February 16, 2008 01:00 PM
發表迴響  
(*星號開頭為必填欄位)











(請輸入您看到的數字,看不到請按右鍵->顯示圖片)


記住我的資訊?







Copyright 2005 Neo's Blog All rights reserved.