這是一個在很多論壇上反覆提出的問題,我有一個工作解決方案,但它很醜陋。 我需要在點擊後禁用按鈕以防止雙重提交表單。我通過更改css類來實現這一點,這將禁用和調暗圖像。由於JavaScript包含了litteral和生成的部分,而且我混合了客戶端id和服務器端代碼,所以我最終得到了3個相同的函數。有沒有辦法讓我可以擁有一個適用於所有3個按鈕的功能?混合服務器和客戶端控件,事件處理
<asp:ImageButton ID="btnSubmit" runat="server"
OnClientClick="doSubmitAndDisable();" OnClick="btnSubmit_Click"/>
<asp:ImageButton ID="btnSubmitMore" runat="server"
OnClientClick="doSubmitNextAndDisable();" OnClick="btnSubmitMore_Click"/>
<asp:ImageButton ID="btnSubmitNext" runat="server"
OnClientClick="doSubmitMoreAndDisable();" OnClick="btnSubmitNext_Click"/>
<script type="text/javascript">
function doSubmitAndDisable() {
if (typeof(Page_ClientValidate) == 'function' && Page_ClientValidate() == false){
return false;
}
document.all.<%= btnSubmit.ClientID%>.className = 'disabled';
document.all.<%= btnSubmitNext.ClientID%>.className = 'disabled';
document.all.<%= btnSubmitMore.ClientID%>.className = 'disabled';
<%= ClientScript.GetPostBackEventReference(btnSubmit, string.Empty) %>;
}
function doSubmitNextAndDisable() {
if (typeof(Page_ClientValidate) == 'function' && Page_ClientValidate() == false){
return false;
}
document.all.<%= btnSubmit.ClientID%>.className = 'disabled';
document.all.<%= btnSubmitNext.ClientID%>.className = 'disabled';
document.all.<%= btnSubmitMore.ClientID%>.className = 'disabled';
<%= ClientScript.GetPostBackEventReference(btnSubmitNext, string.Empty) %>;
}
function doSubmitMoreAndDisable() {
if (typeof(Page_ClientValidate) == 'function' && Page_ClientValidate() == false){
return false;
}
document.all.<%= btnSubmit.ClientID%>.className = 'disabled';
document.all.<%= btnSubmitNext.ClientID%>.className = 'disabled';
document.all.<%= btnSubmitMore.ClientID%>.className = 'disabled';
<%= ClientScript.GetPostBackEventReference(btnSubmitMore, string.Empty) %>;
}
</script>
我很欣賞鏈接,但正如你所看到的,我不僅需要禁用被點擊的控件,這是微不足道的,而且其他的也是如此。 – cdonner 2010-02-23 21:49:02