2011-04-17 357 views
5

我有一個帶有iframe的頁面。在iframe中有一個提交按鈕。當我點擊提交按鈕時,我想要更新父窗口。 這是我迄今所做的,和它的作品(的JavaScript位於父窗口):在iframe中提交後重新加載頁面(javascript/jquery)

var myFrame = $('iframe'); 
myFrame.load(function() { 
myFrame.contents().find('#publish').click(function() { 

    myFrame.load(function() { 
    location.reload(); 
    }); 

}); 
}); 

代碼工作。但我發現重新加載iframe是不必要的。 有沒有更好的方法來檢測「提交」何時完成?

(我不僅可以通過「點擊」或中繼上的任何延遲加載頁面。我必須確保表單的提交完成)

+0

要更新的父窗口?或父窗口被重新加載?什麼是更新? – 2011-04-17 20:36:13

+0

你最終如何解決這個問題? – 2013-12-10 22:37:43

回答

0

假設publish是獨一無二的,你可以簡單地這樣做:

$(document).ready(function(){ 
    $('#publish').live('click', function(e){ 
    e.preventDefault(); 
    //Do whatever you want here 
    }); 
}); 

通知的live將綁定在運行時甚至publish鏈接。

+0

嗨Naveed,你錯過了「});」。但我看不到這個函數如何幫助我提交表單並重新加載頁面。我想要一個函數來檢測何時發送提交。 – Hakan 2011-04-17 18:29:06

+0

@哈坎,謝謝修復。讓我再看一遍。 – 2011-04-17 18:33:49

0

你可以有表單提交返回的js塊:

<html> 
<script> 
window.parent.document.jQueryFunction(); 
</script> 
</html> 

,或者,如果你打開插件,你可以使用的the jQuery Form Plugin的ajaxSubmit會()方法。

$myFrame.contents().find('form').ajaxForm({ 
    success: function() { 
    // update parent 
    } 
}); 
0
$("#publish").click(function() { 
    $('#inputs').ajaxSubmit({ 
     success:function(){ 
      //alert("Reload called"); 
      parent.location.reload(); 
     } 
    }); 
}); 

這個工作。

+0

歡迎來到SO。在問題中沒有具體提及Ajax。它也可能是一個標準的HTML表單提交。 – 2012-11-12 04:40:27