父页面生成模态窗口,模态窗口上的按钮导致父项触发回发?

时间:2010-01-29 21:50:22

标签: jquery modal-dialog simplemodal modalpopups

我有一个asp.net webform。 表单上有一些用户将填写的字段。 有一个超链接打开一个模态窗口(我正在使用jquery& prettyphoto,但可能切换到http://www.ericmmartin.com/projects/simplemodal/,因为他的文档更好)

模态窗口包含一个iFrame,用户可以在其中进行选择并保存记录。

此时我需要关闭该窗口并在父页面上触发回发。

目前我在最后一页上有一个超链接,其中target = parent和href =父页面url。 然后我有一个自动点击它的JavaScript。我知道这是一个廉价的黑客。 然后它将用户发送回父页面,但重新加载页面并丢失所有原始数据。 这就是问题所在。

最好的方法是什么?

谢谢!

2 个答案:

答案 0 :(得分:2)

如果父窗口和子iframe位于同一个域中,那么这应该非常简单。

在iframe内部,window.parent引用外部window对象,而在外部页面中,它引用自身。

https://developer.mozilla.org/en/DOM/window.parent

因此,在iframe中,您可以按以下方式编写代码:

// Check to make sure we're an iframe
if (window.parent !== window) {
  // Run an arbitrary function in the parent window
  var daddy = window.parent;
  daddy.doStuffThatSubmitsAFormInTheParentPage();
}
// Make sure you have that function defined in the parent page.

以下是jsbin中访问的示例。你需要一个控制台才能看到爱情。

http://jsbin.com/ucisi/5

如果您想要相关代码

http://jsbin.com/ucisi/5/edit

http://jsbin.com/ucisi/4/edit

答案 1 :(得分:0)

凭借Alex的解决方案,我能够解决这个问题。

在父页面上,我有:

<script language="JavaScript">
<!--
    function clickPostBackButton() {
        document.getElementById("<%=PostBackButton.ClientID%>").click();
    }
-->
</script>

<asp:Button CssClass="hide" CausesValidation="false" runat="server" Text="Postback" ID="PostBackButton" />

然后在加载在模态窗口中的iFrame上。我有一个带按钮的表格。该按钮将用户带到另一页。在这个页面上我有这个代码:

<script language="javascript" type="text/javascript">
    // Check to make sure we're an iframe
if (window.parent !== window) {
  // Run an arbitrary function in the parent window
  var daddy = window.parent;
  daddy.clickPostBackButton();
}
// Make sure you have that function defined in the parent page.

</script>

此时关闭模态窗口并触发父页面回发。 重要的是要注意我的按钮有CausesValidation =“false”,没有这个我的页面有验证问题。感谢您的提示Alex Sexton