2010-02-28 65 views
5

如何使用jQuery完成以下操作:打開一個彈出窗口,該窗口在單擊子窗口中的鏈接時關閉子窗口,然後讓父窗口返回值父母根據返回的值自動提交表單?我知道jQuery對話框是一個流行的解決方案,但我需要一個彈出窗口,因爲窗口的內容需要可導航,並且我想避免在jQuery對話框中使用iframe。jQuery彈出窗口向父值返回值

彈出窗口將用於收集多個值,最終作爲分隔字符串返回給父級,但是此數據收集需要在提交父窗口表單之前進行。如果有一個「實體選取器」的標準設計模式,就是這樣。

這需要在IE8,FF3.6器,Safari 4和Chrome工作5

謝謝, 馬克

+0

爲什麼你需要窗口的內容通航?這是沒有道理的 - 如果你想彈出一個頁面的窗體,爲什麼讓用戶導航到其他地方? – 2010-02-28 22:52:06

+0

由於彈出窗口將用於收集多個值,最終將作爲分隔字符串返回給父級,但此數據收集需要在提交父窗口表單之前進行。如果有一個「實體選取器」的標準設計模式,就是這樣。 – 2010-02-28 23:18:51

回答

6

這裏是我的解決方案:

var parent = $(parent.document.body); 
$(parent).find('input#valStore').val(theVal); 
$(parent).find('form#myForm').submit(); 
window.close(); 
6

在你新開的瀏覽器窗口中,你可以嘗試像

$("#mylink").click(function(){ 
     value = /* get some value */ 
     window.opener.$("#myform .somehiddenfield").val(value); 
     window.opener.$("#myform").submit(); 
     window.close(); 
}); 

免責聲明:我沒有在任何瀏覽器中測試過。

+0

感謝您的回覆,但「獲得一些價值」對我而言有點模糊。例如,如果該值來自應用程序的會話狀態,該怎麼辦?我怎麼會在你的例子中分配? – 2010-02-28 23:24:23

+0

然後你會像這樣渲染它:value ='<%= Session [「mykey」]%>'。但是,如果值來自會話狀態,爲什麼你需要在窗口之間傳遞它?我曾預料你會從子窗口中的某個輸入字段(文本框)中獲取它。然後它會是value = $('input.sometextbox')。val(); – Rune 2010-03-01 04:55:17

+0

我編輯了我的原始問題來澄清。彈出窗口用於瀏覽系統以收集各種實體引用,然後將它們作爲分隔字符串傳回給父代。您可以將其視爲類似於購物車,其中所選項目以會話狀態存儲。 – 2010-03-01 12:34:50