了解網頁提交運作原理
ASP.NET 在撰寫程式時,正常的觸發事件為 OnClick()
觸發事件必須依循條件,判斷是否執行 ( if, else )
甚至要對物件做改變如:按下按鈕後無法再點選
但依照 ASP.NET 運作原理來觀看
正規的 OnClick() 在提交那刻開始
就無法刷新前台物件,到提交事件結束時才會刷新
即使程式碼寫在提交事件一開始。
站在功能使用生命週期來看
等到跑完再來讓按鈕無法被點選,已經來不及了
所以會需要 OnClientClick() 事件
甚麼是 OnClientClick() ?
OnClientClick 是前台觸發事件,會搶在 OnClick 執行前優先執行
適合在提交數據到後台之前,檢查數據是否符合提交範圍
若不符合,則連後台提交事件 OnClick 都不會執行。
亦適用在提交前,先讓按鈕無法被點選,提交到後台
等到方法執行完畢,再讓按鈕可被點選。
事實上站在微軟設計的理念來運作
OnClientClick 事件是前台觸發事件
OnClick 是後台觸發事件,會提交到後台
OnClick 雖然是提交後台事件
但還是可以被套用 JavaScript Function 來在前台執行
不要被混淆誤用了
OnClientClick() 事件本身是利用 javascript 來執行
可直接將要做的事情寫在觸發事件 OnClientClick() 內,方法如下:
<asp:Button ID="BtnChk" runat="server" Text="確認" OnClick="BtnChk_Click" OnClientClick="this.value='處理中';this.disabled=true;" UseSubmitBehavior="false" />
若是透過 JavaScript Function ,則 JavaScript Function 必須要具有能回傳 bool 值
當 OnClientClick 回傳 true
程式會自動執行 OnClick 事件
反之當 OnClientClick 回傳 false
程式不會執行 OnClick
Programmer 必須自行在 OnClientClick 秀錯誤訊息