出處: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的.