2011-10-25 18 views
4

我在一個ASP.Net C#應用程序上工作時,我想創建一個按鈕控件,當用戶點擊按鈕,一個JavaScript確認彈出窗口,然後從用戶獲取布爾值是/否)在按鈕onClick事件中執行進一步的操作。在ASP.Net按鈕控件上的JavaScript確認

我在按鈕中添加了OnClientClick和OnClick事件,其中OnClientClick觸發JavaScript函數,並且(Yes/No)值存儲在HiddenField控件中以便在OnClick事件期間使用。

這多少有點像下面的代碼片段:

function CreatePopup(){ 
      var value = confirm("Do you confirm?"); 
      var hdn1 = document.getElementById('hdn1'); 
      hdn1.Value = value; 
     } 

<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" OnClientClick="CreatePopup()"/> 
<asp:HiddenField ID="hdn1" runat="server" /> 

是否有爲了做到這一點任何更好的辦法?先進的謝謝你。

+0

即使用戶說「不」,您是否需要啓動服務器事件? – balexandre

+0

是的,這是要求,請參閱評論我的答案! –

回答

7

更改CreatePopup()函數返回一個布爾值:

function CreatePopup() 
{ 
    return confirm("Do you confirm?"); 
} 

然後確保你返回從按鈕OnClientClick()

<asp:Button ... OnClientClick="return CreatePopup();" />

使用該方法時,OnClick()方法只會在OnClientClick()方法返回true時觸發。

+0

感謝您的評論,我需要以始終觸發OnClick()事件,所以上面的解決方案不能適用於我的情況:) – sams5817

+1

爲什麼不只是爲用戶提供兩個ASP按鈕,而不是將他們的決定推遲到JS確認?然後,您可以在處理程序中放入「是/否」特定的代碼,併爲其餘部分調用通用方法。如果您的解決方案能夠正常工作,並且您對此感到滿意,我認爲沒有理由改變它! –

0

爲什麼要將JavaScript確認的值存儲在隱藏字段中?只需在確認值爲「否」時在JavaScript函數中返回false,以防止表單提交。當cnfirm值爲yes時,返回true以允許提交表單。在button_click方法後面的代碼中,您不必檢查JavaScript確認中發生了什麼,因爲如果用戶拒絕提交,表單將永遠不會提交。

+0

每當用戶點擊按鈕時,我都希望是/否值,意思是我總是希望OnClick()事件觸發並需要是/否值,只是爲什麼我將它存儲在隱藏字段中 – sams5817