2012-07-05 35 views
1

我正在刪除一個項目,並希望在執行所有與LINQ相關的刪除操作之前彈出確認窗口。jquery-ui模式確認內的asp.net按鈕控件

我想要的是被加載到模態確認窗口然後執行服務器端功能。頁上

按鈕:從jQuery的UI樣品頁基本上

<input type="button" onclick="deleteConfirmation();" value="Eyða korti" id="btnDelete"/> 

的JavaScript。 我不想按鈕

function deleteConfirmation() { 

    $(".confirmation").dialog({ 
      resizable: false, 
      height: 350, 
      modal: true, 
    }); 
} 

標記加載到模態窗口:

<div class="confirmation" style="display:none;"> 
Do you really want to delete... 
<asp:Button ID="btnDelete" runat="server" Text="Delete" OnClick="btnDelete_Click" /> 
<input type="button" value="Cancel" class="button" /> 

不用多說onclick事件不會引發。 我如何獲得所需的功能。

編輯: 我也試過antoher事情

我把對話框內的按鈕,然後返回真/假 然後讓的OnClientClick =上的ASP按鈕時,一直工作到「迴歸deleteConfirmation()」一個點,因爲服務器端代碼運行,但彈出不等待用戶輸入。

回答

3

默認情況下,jQuery對話框克隆dom元素並將它們放在主體的末尾。

這是表單標籤之外。

由於它在表單標籤之外,因此asp.net不會收到這些事件。

您需要將dom放回表單中。 事情是這樣的:

function deleteConfirmation() { 

    $(".confirmation").dialog({ 
      resizable: false, 
      height: 350, 
      modal: true, 
    }); 

    //dialog put the asp elements outside form, bring it back 

    $(".confirmation").each(function() { 
     var popup = $(this); 
     popup.parent().appendTo($("form:first")); 
    }); 

    //asp.net has its precious elements back into the form tag. 

} 
+0

我明白你的意思,但我不確定我是否明白你的意思。 你的意思是說,通過說彈出窗口= ...模態窗口將有不同的行爲,這是說它不會複製dom元素? 此外,我已經添加了對onclientclick – fogedi 2012-07-05 12:32:53

+0

這個問題的小改動這段代碼將運行所有具有class =「confirmation」的元素,並將它們放回表單標記中。這將確保您的按鈕點擊被asp.net檢測到。我看到了你的改變,但是當你調用'dialog'時並不重要。它將始終將內容放到主體的末尾。這個代碼應該在你調用'dialog'後運行。我會更新答案。 – nunespascal 2012-07-05 12:41:35

+0

理解,非常感謝。 – fogedi 2012-07-05 12:50:23