亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

設置按鈕不可用避免重復提交

2019-11-17 01:59:41
字體:
來源:轉載
供稿:網友

設置按鈕不可用避免重復提交

設置按鈕不可用,避免重復提交

編寫人:CC阿爸

2015-1-29

今天在這里,我想與大家一起分享如何處理項目中經常出現用戶重復提交的情況,為了防止這種情況,最常用的方法就是在用戶點擊按鈕后將該按鈕設為不可用,筆者在實際開發當中遇到了多種不同的情況,在此做個小結,以供參考。有興趣的同學,可以一同探討與學習一下,否則就略過吧。

由于剛開始進行的web開發,很多時候使用的為html控件,因此處理起來相當簡單

如:先前開發的報銷系統,在提交單據審批時,時常會出現重復審批下一流程的bug。

aspx前臺<tdalign="left"colspan="7"><buttonclass="button"id="btnSubmit"onmouSEOver="this.style.backgroundColor='#ffffff'"onfocus="blur();"onclick="btnSubmit2_onclick();"onmouseout="this.style.backgroundColor='#eeeeee'"type="button"runat="server"></button></td>functionbtnSubmit2_onclick(){document.getElementById("btnSubmit").disabled=true;//使不可用}C#this.btnSubmit.ServerClick+=newSystem.EventHandler(this.btnSubmit_ServerClick);

今天在開發另一個項目中,用到的是webcontrol ,本想也使得這種方式來處理,

<asp:ButtonID="btnSubmit"runat="server"OnClientClick="btnSubmit2_onclick();"OnClick="btnSubmit_Click"></asp:Button>

但發現在客戶端利用js處理為不可用后,按鈕是為不可用狀態,但按鈕事件不會執行了。這是什么問題?

碰到問題,當然要搞清楚原因。經過在網上查詢資料發現原來是:

按鈕的服務端事件其實是.net框架利用按鈕的客戶端事件onclick來實現的,所以你在服務端重置onclick屬性,會覆蓋框架處理服務端事件的過程。 上面已經提供了客戶端腳本,你在button上加btnSubmit2_onclick()就可以,

注意只可用HtmlInputButton控件來實現,不可用WebControlsButton。

以下是其它網友總結的文章,寫得很全面,現摘抄下來供大家參考,我本次也是采用了第二種方法解決了我碰到的問題。

歡迎加入技術分享群

(轉)原文地址如下:

http://blog.itpub.net/28699126/viewspace-775581/

第一種情況是非submit類型的按鈕 這種情況比較簡單,只要在客戶端添加事件,將按鈕設為不可用就可以了??聪旅娴拇a: asp.net-Code:<form.id="form1"runat="server"><asp:LabelID="lbl"runat="server"></asp:Label><asp:ButtonID="btn"runat="server"Text="Test"nClick="btn_Click"nClientClick="this.disabled=true"UseSubmitBehavior="false"/></form>C#-Code:PRotectedvoidbtn_Click(objectsender,EventArgse){System.Threading.Thread.Sleep(1000);lbl.Text=DateTime.Now.ToString();}

第二種情況是submit類型的按鈕

此時第一種方法就不行了,按鈕被設為DISABLED之后就無法完成提交,我們可以適當修改代碼:

ASP.NET-Code:

<form.id="form1"runat="server"><asp:LabelID="lbl"runat="server"></asp:Label><asp:ButtonID="btn"runat="server"Text="Test"nClick="btn_Click"/></form>C#-Code:protectedvoidPage_Load(objectsender,EventArgse){if(!Page.IsPostBack){btn.OnClientClick="this.disabled=true;"+GetPostBackEventReference(btn);}}

與第一種方法不同的是我們在Page_Load中給按鈕添加客戶端事件,并附加了GetPostBackEventReference。但這樣做還有個缺 陷,在第一提交回發完成以后,再點擊按鈕就會失敗,因此我們需要去掉if (!Page.IsPostBack)這句,也就是每次回發都要重復綁定客戶端事件。

第三種情況跟第一種類似,只是多了個UpdatePanel ASP.NET-Code:<asp:UpdatePanelID="up1"runat="server"><ContentTemplate><asp:LabelID="lbl"runat="server"></asp:Label><asp:ButtonID="btn"runat="server"Text="Test"nClick="btn_Click"nClientClick="this.disabled=true;"UseSubmitBehavior="false"/></ContentTemplate></asp:UpdatePanel>

第四種情況也是在UpdatePanel里面,不過和第二種情況一樣,也是Submit類型的按鈕 和第二種情況不同的是,我們只需要在第一次加載的時候綁定客戶端事件就可以了,即在 if (!Page.IsPostBack){}中綁定事件。 第五種和第四種不同的是,按鈕在UpdatePanel外面,通過觸發器來刷新指定的UpdatePanel 如果按第四種的方法,可以在點擊按鈕后設為不可用,但回發完成以后該按鈕不會恢復可用狀態:

ASP.NET-Code:

<asp:UpdatePanelID="up1"runat="server"><ContentTemplate><asp:LabelID="lbl"runat="server"></asp:Label></ContentTemplate><Triggers><asp:AsyncPostBackTriggerControlID="btn"EventName="Click"/></Triggers></asp:UpdatePanel><asp:ButtonID="btn"runat="server"Text="Test"nClick="btn_Click"/>C#-Code:protectedvoidPage_Load(objectsender,EventArgse){if(!Page.IsPostBack){btn.OnClientClick="this.disabled=true;"+GetPostBackEventReference(btn);}}protectedvoidbtn_Click(objectsender,EventArgse){System.Threading.Thread.Sleep(1000);lbl.Text=DateTime.Now.ToString();}

為了解決這個問題,最簡單的方法就是將該按鈕放在另一個UpdatePanel里面,這樣每次都可以恢復原狀態了。另外還可以根據Atlas的頁面周期,在提交完成以后顯式將該按鈕設為可用。

注:在Asp.Net中所有默認的按鈕都是Submit類型,如果要是有button類型則,需要設置UseSubmitBehavior="false";

Submit是專門用于提交表單的Button,與Button的區別主要有兩點:   type=button 就單純是按鈕功能   type=submit 是發送表單    (1)Submit將表單提交(form.submit())作為其onclick后的默認事件,Button并非如此    (2)表單提交時,所有具有name屬性的html輸入元素(包括input標簽、button標簽、select標簽等)都將作為鍵值對提交,除了Submit對象。Submit對象只有在自己被單擊后的提交中才會作為鍵值對被提交。   但是對于從事WEB UI的人應該要注意到,使用submit來提高頁面易用性:   使用submit后,頁面支持鍵盤enter鍵操作,而很多WEB軟件設計師,可能沒有注意到submit統一.   用button后往往頁面不支持enter鍵了。所以需要支持enter鍵,必須要設置個submit,默認enter鍵對頁面第一個submit進行操作。      執行完onClick,轉到action。可以自動提交不需要onClick。所以說onclick這里可以不要。   執行完onClick,跳轉文件在 js文件里控制。提交需要onClick。   比如:   onclick="form1.action='a.jsp';form1.submit();" 這樣就實現了submit的功能了。   講白一些,就是submit會有一個跳轉,頁面會刷新;而button不會刷新,就是一個button;可以用<button type="submit/button/reset"></button>來生成按鈕,更加靈活,樣式更好控制。(如果客戶端禁用JS,則使用Submit時,前臺驗證就會失效,后臺就可能獲取到非法的數據)


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲综合在线小说| 成人高清视频观看www| 久久久久久久久亚洲| 日韩欧美在线视频免费观看| 亚洲自拍欧美色图| 欧美一性一乱一交一视频| 成人精品视频99在线观看免费| 欧美日韩国产在线| 欧美成人精品h版在线观看| 精品电影在线观看| 久久久91精品国产| 97视频免费在线看| 亚洲综合中文字幕在线观看| 久久久久久com| 成人做爰www免费看视频网站| 亚洲欧美国产视频| 久久中文字幕在线视频| 亚洲片在线观看| 国产丝袜一区二区三区免费视频| 最近2019中文免费高清视频观看www99| 亚洲午夜av电影| 国产精品激情自拍| 最近2019好看的中文字幕免费| 国产在线观看精品一区二区三区| 亚洲自拍偷拍视频| 亚洲自拍高清视频网站| 日韩第一页在线| 91禁外国网站| 成人黄色网免费| 中文字幕最新精品| 精品一区二区三区电影| 91成品人片a无限观看| 日韩欧美国产高清91| 欧美乱妇高清无乱码| 精品成人69xx.xyz| 欧美亚洲第一区| 国产精品户外野外| 国产精品h片在线播放| 日韩av理论片| 亚洲男人第一网站| 一区二区三区国产在线观看| 亚洲第一页自拍| 亚洲美腿欧美激情另类| 美女精品视频一区| 亚洲国产另类 国产精品国产免费| 国产91精品视频在线观看| 精品亚洲永久免费精品| 97久久精品国产| 精品亚洲男同gayvideo网站| 国产日韩在线免费| 国产精品高清在线观看| 精品magnet| 国外成人在线视频| 亚洲最大激情中文字幕| 久久久久久免费精品| 亚洲精品v欧美精品v日韩精品| 91性高湖久久久久久久久_久久99| 日韩免费精品视频| 国产精品午夜国产小视频| 国产精品入口日韩视频大尺度| 91在线观看欧美日韩| 国产精品三级美女白浆呻吟| 久久久伊人日本| 久久久久999| 亚洲黄页视频免费观看| 91成人免费观看网站| 成人午夜激情免费视频| 欧美国产第一页| 精品亚洲精品福利线在观看| 国产精品亚洲网站| 伊人伊成久久人综合网小说| 91久久精品一区| 欧美精品做受xxx性少妇| 亚洲国产精品人久久电影| 欧美大码xxxx| 欧美夫妻性视频| 日韩电影在线观看永久视频免费网站| 日韩av成人在线| 亚洲激情久久久| 中文字幕成人在线| 亚洲男人天堂久| 亚洲第一精品夜夜躁人人爽| 97久久久久久| 欧美福利视频在线观看| 久久久精品视频在线观看| 亚洲自拍偷拍色片视频| 日韩美女视频在线观看| 亚洲成人精品av| 色久欧美在线视频观看| 欧美极品少妇xxxxx| 国产69久久精品成人| 最新日韩中文字幕| 欧美色视频日本高清在线观看| 欧美日韩一区免费| 欧美日本在线视频中文字字幕| 亚洲精品久久久一区二区三区| 国外视频精品毛片| 欧美色欧美亚洲高清在线视频| 欧美精品在线第一页| 国产成人久久久精品一区| 国产有码在线一区二区视频| 精品欧美aⅴ在线网站| 日韩av在线电影网| 欧美在线日韩在线| 一个人看的www久久| 亚洲黄色在线看| 欧美激情精品久久久久久变态| 成人免费大片黄在线播放| 91国在线精品国内播放| 91国产精品电影| 精品中文字幕乱| 国产精品91在线观看| 欧美成人中文字幕| 日韩av在线直播| 亚洲一区二区日本| 91在线播放国产| 精品视频在线播放| 亚洲午夜国产成人av电影男同| 怡红院精品视频| 欧美人与性动交a欧美精品| 亚洲人成啪啪网站| 亚洲天天在线日亚洲洲精| 亚洲福利视频网站| 97国产一区二区精品久久呦| 国产精品男人的天堂| 亚洲一区二区在线| 亚洲精品在线看| 日韩一区二区av| 欧美乱人伦中文字幕在线| 色偷偷亚洲男人天堂| 国产精品嫩草视频| 国产精品影片在线观看| 欧美电影免费观看高清| 成人春色激情网| www.亚洲免费视频| 国产精品入口尤物| 性欧美xxxx交| 97久久精品视频| 亚洲欧美日韩中文视频| 欧美日韩福利在线观看| 社区色欧美激情 | 国产91对白在线播放| 96精品久久久久中文字幕| 欧美一性一乱一交一视频| 精品视频在线播放| 日韩av大片免费看| 国产精品99久久久久久久久| 国产亚洲aⅴaaaaaa毛片| 国产精品91视频| 一本色道久久88综合日韩精品| 91精品久久久久久久久久入口| 欧美另类老肥妇| 欧美成人精品在线| 国产精品久久久一区| 欧美大尺度激情区在线播放| 亚洲国产成人精品久久久国产成人一区| 九九热在线精品视频| 久久久免费精品视频| 国产日韩在线视频| 在线精品高清中文字幕| 久久视频在线播放| 午夜欧美不卡精品aaaaa| 日韩毛片在线观看| 欧洲成人性视频|