.NET下 避免使用者重複按下button

在網頁上我們經常會透過表單與使用者進行互動。 不過因為網路回應有慢有快,可能會連續送出表單的資料,結果造成資料的重複輸入。 asp.net有一個小技巧的方法可以簡單的防護這樣的情形發生。

protected void Page_Load( object sender, EventArgs e) {     if (!Page.IsPostBack)     {         Button1.Attributes["onclick"] = "this.disabled = true;" +             Page.ClientScript.GetPostBackEventReference(Button1, "");     } } protected void Button1_Click( object sender, EventArgs e) {     System.Threading.Thread.Sleep(5000); }

在page load的時候替button加入一個onclick的屬性,設定按下button之後便disable自己,再去觸發 form submit。

< div > < input type ="hidden" name ="__EVENTTARGET" id ="__EVENTTARGET" value="" /> < input type ="hidden" name ="__EVENTARGUMENT" id ="__EVENTARGUMENT" value="" /> < input type ="hidden" name ="__VIEWSTATE" id ="__VIEWSTATE" value ="/wEPDwUKMTQ2OTkzNDMyMQ9kFgICAw9kFgICAQ8PZBYCHgdvbmNsaWNrBS90aGlzLmRpc2FibGVkID0gdHJ1ZTtfX2RvUG9zdEJhY2soJ0J1dHRvbjEnLCcnKWRkfWX8S2VxKVGYt+J8gJXShAbhPv4=" /> </div> < script type ="text/javascript" > <!-- var theForm = document.forms['form1']; if (!theForm) {     theForm = document.form1; } function __doPostBack(eventTarget, eventArgument) {     if (!theForm.onsubmit || (theForm.onsubmit() != false)) {         theForm.__EVENTTARGET.value = eventTarget;         theForm.__EVENTARGUMENT.value = eventArgument;         theForm.submit();     } } // --> </script>      < div >          < input type ="submit" name ="Button1" value ="Button" onclick ="this.disabled = true;__doPostBack('Button1','');" id ="Button1" />      </div>      < div >
這樣就可以避免使用者重複按下button了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值