2010-08-31 99 views
2

我有一個奇怪的問題,看來,我不知道如何解決。 我有這樣一個按鈕:Asp.Net按鈕onclientclick問題

<asp:Button ID="btnSave" runat="server" ClientIDMode="Static" Text="Save" OnClientClick="return ConfirmSave();" OnClick="btnSave_Click" /> 

如果我寫類似下面的我的客戶端功能,它按預期工作:

function ConfirmSave() 
{ 
    return confirm('Confirm?'); 
} 

但我應該檢查,在函數內部,對確認結果,像這樣:

function ConfirmSave() 
    { 
     if (Page_ClientValidate('validationGroup')) 
     { 
     var conf = confirm("Confirm?"); 

     if (conf) 
     { 
      $('#btnSave').attr('disabled', 'disabled'); 
     } 

     return conf; 
     } 
     else 
     return false; 
    } 

這樣做,網頁提交,但服務器click事件不火。

任何人都可以幫忙嗎?謝謝

+0

^^在if條件中,請實際替換「 - 做些什麼」。 – Dienekes 2010-08-31 08:30:03

+0

在客戶端使用此代碼可能有所幫助: 2015-07-22 07:49:26

回答

0

如果你的代碼中有一個名爲btnSave_Click()的方法,那麼當你回發它時,它將首先落入你的Page_load方法中,然後進入該方法。如果你使用的是VB,那麼你需要一個Handles btnSave_Click()的方法。

+0

後面的代碼是好的,我知道asp.net是如何工作的,它似乎有些奇怪的javascript問題。 – opaera 2010-08-31 07:47:20

2

是的,因爲Button是用提交類型輸入的。

您可能在頁面中有一些其他錯誤,可能是您的按鈕ID的重複(因爲您已將其設置爲靜態模式)。

檢查,如果你有給btnSave再在其他地方,或者還要檢查,如果您有任何JavaScript錯誤。

(您的網頁渲染後,在瀏覽器中看到你的頁面的源代碼和搜索btnSave ID是否存在一個以上的時間)

+0

如果我有一個重複的按鈕ID,我輸入的第一個函數不應該工作,而是它按預期工作。第一種方法,它正確返回True/False,也沒有在第二個。 似乎沒有javascript錯誤,但我不太確定,因爲頁面回發(沒有觸發服務器點擊)。 – opaera 2010-08-31 07:53:53

+0

只存在一次。 – opaera 2010-08-31 08:06:33

+0

Aristos是正確的,必須有其他東西引起這種行爲。它看起來並不直接與if條件塊相關。 – Dienekes 2010-08-31 08:09:50

2

使用超時禁用你的代碼完成後立即按鈕併發生提交。

if (conf) 
{ 
    setTimeout(function() { $('#btnSave').attr('disabled', 'disabled') }, 0); 
} 
+0

+1這是唯一對我有用的東西,顯然webforms回發javascript決定不處理按鈕,如果按鈕被設置爲禁用我的腳本。 – Maslow 2012-02-07 14:20:16