2012-07-05 37 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