2009-12-15 115 views
5

在Asp.NET aspx頁面中,有一個用於保存數據的按鈕,當用戶點擊這個按鈕時,我想: 1.立即禁用此按鈕 2.然後調用函數Save()中的代碼將數據保存回DB 3.然後再次啓用此按鈕。如何運行同一按鈕的客戶端和服務器端代碼?

我做如下內容:

  1. JS功能在apsx:

    功能DisableSave(){ saveButton =的document.getElementById( '<%= btnSave.ClientID%>'); saveButton.disabled = true; 返回false; }

  2. 按鍵腳本:

    < --- ASP:按鈕ID = 「btnSave」 按需= 「按鈕命令」 的CommandName = 「保存」 RUNAT = 「服務器」 文本= 「保存」 的OnClientClick =」 javascript:DisableSave();「/>

  3. 在函數Save()(應該由CommandName調用)後面的代碼中,設置Save按鈕啓用回。

但是當我運行代碼時,只能禁用保存按鈕,後面的代碼沒有發生。

如何解決?

+0

你使用IE嗎? – 2009-12-15 20:14:08

+0

即使我刪除返回false;仍然得到相同的結果,沒有代碼在呼叫。 IE/FF相同的結果。 – KentZhou 2009-12-15 20:26:08

+0

嗨,大家好,我的按鈕在UpdatePanel內部進行部分更新。東西看起來不像預期的那樣。 – KentZhou 2009-12-15 20:40:19

回答

3

顯然,某些瀏覽器(IE)在禁用時不會處理按鈕的提交操作。我在Firefox中嘗試過這種方式,但它確實回傳,但IE瀏覽器沒有運氣。一種解決方法,雖然不提供用戶反饋,但將做OnClientClick="this.onclick= function() { return false; }"。這將防止更多的回傳發生。

編輯:onclick需要是一個功能不是一個字符串。

+0

這會完全停止發回。無法調用函數後面的代碼。 – KentZhou 2009-12-15 20:33:56

+0

這不會阻止第一次發生回發。如果用戶開始瘋狂點擊,它將阻止瀏覽器再次發佈更多時間。 – 2009-12-15 20:39:27

2

問題是,在onclick事件中使用JavaScript禁用按鈕將停止發生回發。

一個簡單的解決方法在this CodeProject文章中說明。

相關問題