2014-10-07 100 views
0

我在彈出窗口的iframe中有一個HTML表單,並希望將其提交到彈出窗口的打開窗口(window.parent.opener)。該窗體不存在於打開窗口中,但僅在彈出窗口的iframe中存在。最簡單的方法是什麼?將表單提交到特定窗口

我的圖形目標沒有幫助,因爲它們只允許指定_parent,並且打開的窗口沒有iframename。只要它不可見,動態地重新創建打開窗口中的iframe表單可能是一個選項。有沒有一個庫來動態創建一個給定序列化表單數據的表單?

(jQuery的解決方案優先)

+0

您是否考慮向父頁面發送ajax請求以獲取表單值? – venkatKA 2014-10-07 09:00:37

+0

彈出窗口(或彈出窗口中的iframe)應使打開窗口提交POST請求並顯示結果。 Ajax將有助於提交數據,但不會更改打開窗口的內容。 – 2014-10-07 09:18:20

回答

1

動態重新創建在其他窗口的形式竟然是沒有我想象的那樣糟糕。這段代碼應該這樣做:

var originalForm = $('#myForm'); 
var values = originalForm.serializeArray(); 
var newForm = $('<form>').attr({method: 'post', action: originalForm.prop('action')}); 
$.each(values, function(i, val) { 
    newForm.append($('<input>').attr({type: 'hidden'}).attr(val)); 
}); 
$('body', window.parent.opener.document).append(newForm); 
newForm.submit(); 
1

你能不能從序列化形式的所有數據,並通過window.parent.opener它傳遞給家長嗎?

或者使用類似於window.parent.opener.location = "http://something.com?var1=test&var2=test"之類的URL。

對於POST,嘗試dinamically設定目標:

document.whateverForm.target = window.parent.opener.window.name;

+0

是的,但我不希望在父頁面中添加表單(或任何有關它的知識的JavaScript)。 使用window.location會導致HTTP GET,但這肯定應該由HTTP POST完成。 – 2014-10-07 09:11:18

+1

檢查編輯的答案。它應該以編程方式設置目標。 – Romeo 2014-10-07 09:21:17

+0

這是一個非常酷的想法:)不幸的是,我懷疑它會起作用,至少在所有瀏覽器上。在我的Chrome中,名稱是「」。 – 2014-10-07 09:45:22

相關問題