2012-04-16 79 views
0

我有一個與另一個窗體有一個彈出頁面的窗體。在這個彈出窗體中,我想通過隱藏字段填寫所有字段並將其存儲在主父窗體中的單個字段中。所以,當父窗體被提交時,我可以通過php的隱藏字段獲得所有的字段。我怎麼能用jQuery來做到這一點?我可以從彈出窗體中獲取所有字段並將其作爲json字符串存儲在隱藏字段中嗎?然後在PHP中能夠將該jQuery字符串變成一個對象,所以我可以輕鬆訪問所有的表單值?如果是這樣,那麼我將如何從彈出窗體中獲取所有字段並將其轉換爲json字符串?還是有更好/更簡單的方法?使用Jquery將表單數據存儲到隱藏字段中?

+0

這可能是一個更好的主意,只是換了一些在一個div形式元素作爲模態(?)彈出的形式的,這樣的數據實在是表單內但它看起來像你這是一個彈出窗口。 – Dale 2012-04-16 18:43:31

+0

@Dale對不起,這是我在做什麼。使用jquery UI中的模式,我只是將表單封裝在一個隱藏的div中並調用對話框動作。但是,儘管如何將表單數據存儲到父窗體上的隱藏變量中,在表單提交後我可以輕鬆地從php獲取所有數據?它不一定是json,但認爲這將是最簡單的。 – John 2012-04-16 18:45:56

+0

MetalFrog已經閱讀了我的想法與這一個+1你的先生 – Dale 2012-04-16 18:47:04

回答

5

要捕獲的形式進入的輸入發帖:

你想.serialize()形式。

$('input').val($('form').serialize()); 

然後,在PHP中,您只需要執行一個parse_str()即可將其拆分回數組中。

另外,請記住,有可能比這樣傳遞字段數據更好的解決方案,但如果你對該實現感到憤怒,那麼這可能是一條可行的路。

打開窗體作爲一個模式,然後將數據收集在PHP:

// You can set this to not open by default and bind the opening to a button, or a link, etc... 
$('form').dialog({ 
    modal: true 
}); 

在PHP中,表單將在$_POST包含正常。

print_r($_POST); 
0

一個想法是使用jQuery來創建這樣的領域:

$(".innerForm input").each(function() { 
    $(".parentForm").append("<input type='hidden' name='"+$(this).attr("name")+"' value='"+$(this).val()+"'"); 
}); 

如果這種方式添加值到您的網頁,那麼你就只能夠訪問它們,就像它們是正常部位的$ _ POST

$_POST("hidden_field_name") 
+0

這似乎過於複雜,並且此時您也將DOM的大小加倍。 – MetalFrog 2012-04-16 19:48:58

+0

非常有效的點,@MetalFrog;如果您的解決方案適用於OP,那麼我會鼓勵他們按照您的示例進行序列化。你的優雅得多,但這種方法對某人來說可能更可取或更有用。 – veeTrain 2012-04-16 19:54:05