2012-04-16 80 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