2010-01-29 49 views
1

我有一個asp.net網頁表單。 用戶填寫的表單上有幾個字段。 有打開一個模式窗口(我使用jQuery & prettyphoto,但可能會切換到http://www.ericmmartin.com/projects/simplemodal/,因爲他的文檔更好)父頁面spawn模態窗口,模態windw上的按鈕會導致父窗口回發?

模態窗口包含在用戶進行選擇並保存記錄一個iFrame的超鏈接。

在這一點上我需要關閉該窗口,並觸發父頁面上回發。

目前,我有最後一頁上的超鏈接在目標=家長和HREF =父頁面的URL。 然後我有一個javascript autoclicks它。我知道這是一個便宜的黑客。 然後,它向用戶發送回父頁面,但是頁面重新加載,所有的原始數據都將丟失。 這是問題所在。

這樣做的最好方法是什麼?

的感謝!

回答

2

如果父窗口和子iframe在同一個域上,那麼這應該相當簡單。

內部框架,window.parent指的是外部的window對象,而在外部頁面中,它指的是它本身。所以在iframe

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

,你可以沿着線寫代碼:

// 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

0

與亞歷克斯的解決方案,我能解決這個問題。

在父頁面上,我有:

<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

+0

我覺得很有意思的是,您列出了您的解決方案作爲答案,但要歸功於Alex Slexton的迴應。呵呵。 – miketaylr 2010-02-01 16:36:49

+0

Mike,wtf。人們正在尋找實際的代碼,以便他們可以複製並粘貼它並繼續前進。上面的代碼就是這樣。 – aron 2010-02-02 16:09:42