2015-10-22 47 views
1

我有一個asp.net頁面,我想在觸發服務器端事件之前顯示一個確認對話框。OnClientClick = true不會觸發服務器端代碼

但是,當用戶單擊確定按鈕時,它不觸發服務器端事件。

我已經嘗試了所發佈的其他問題中提及的所有內容。

我認爲這個問題可能是因爲我還使用一個更新面板:

下面是代碼:

<asp:ScriptManager runat="server"></asp:ScriptManager> 
    <asp:UpdatePanel runat="server" ID="myUpdatePanel" UpdateMode="Conditional"> 
     <ContentTemplate> 
      <asp:Hyperlink runat="server" ID="InstanceHyperlink" Visible="false"></asp:Hyperlink><asp:Button runat="server" Visible="false" ID="DeleteInstance" OnClick="DeleteInstance_Click" Text="Delete Instance"/> 
       <asp:Button runat="server" OnClientClick="if (! createInstanceConfirm()) { return false; }" OnClick="CreateInstance_Click1" ID="CreateInstance" UseSubmitBehavior="false" Text="Create Instance"></asp:Button> 
     </ContentTemplate> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="CreateInstance" EventName="Click"/> 
    </Triggers> 
</asp:UpdatePanel> 

的Javascript:

<script type="text/javascript"> 
    function createInstanceConfirm() 
    { 
     UIkit.modal.confirm("You are about to create a new instance", function() 
     { 
      return true; 
     }); 
    } 
</script> 

回答

6

您正在返回false但如果你不想取消回寄你必須返回true

所以不是:

OnClientClick="if (! createInstanceConfirm()) { return false; }" 

你可以使用這個(假設該方法將返回truefalse):

OnClientClick="return createInstanceConfirm();" 

我以前沒有使用過這種成分,但你可以嘗試這個:

function createInstanceConfirm() 
{ 
    bool confirmed = UIkit.modal.confirm("You are about to create a new instance", function() 
    { 
     return true; 
    }); 
    return confirmed; 
} 
+0

我已經嘗試過,但它仍然無法正常工作,這讓我生氣了!我同意它應該工作。 – realtek

+0

@realtek:我之前沒有使用過'UIkit.modal.confirm'。但你必須回報真實。無論如何,您都可以通過從'createInstanceConfirm'返回true來測試它,然後回發。確認'返回任何東西嗎?我編輯了我的答案。 –

+0

好吧,我剛剛發現UIKit.modal.confirm實際上會在用戶單擊確定時觸發回調。所以函數沒有返回true。它會立即返回。不知道我怎麼才能讓這個工作現在! – realtek

0

你試過除去Eve來自ASyncPostBackTrigger的ntName屬性 - 不要認爲這是必需的。檢查一次渲染後的頁面源代碼,並查看鏈接到該問題按鈕的事件。

+0

是的,我已經刪除,但它仍然無法正常工作。如果我刪除OnClientClick它正常工作,但我需要確認 – realtek

0

我發現,這是使用回調,我設法得到它的工作通過調用另一個JavaScript函數,手工做了一個回按鈕:

function createInstanceConfirm() { 
     return UIkit.modal.confirm("You are about to create a new instance for Development", function() { 
      JSFunction(); 
     }); 
    } 

    function JSFunction() { 
      __doPostBack('<%= CreateInstance.ClientID %>', ''); 
     } 

它的工作方式JQuery的確認對話框相同。

相關問題