【问题标题】:Store form data into hidden field using Jquery?使用Jquery将表单数据存储到隐藏字段中?
【发布时间】:2012-04-16 18:38:54
【问题描述】:

我有一个带有另一个表单的弹出页面的表单。在该弹出表单中,我想填写所有字段并通过隐藏字段将其存储在主父表单中的单个字段中。这样当父表单被提交时,我可以通过 php.ini 的隐藏字段获取所有字段。我怎么能用 jquery 做到这一点?我可以从弹出表单中获取所有字段并将其作为 json 字符串存储在隐藏字段中吗?然后在 php 中能够将该 jquery 字符串转换为一个对象,以便我可以轻松访问所有表单值?如果是这样,那么我将如何从弹出表单中获取所有字段并将其转换为 json 字符串?还是有更好/更简单的方法?

【问题讨论】:

  • 将一些表单元素简单地包装在一个用作模式(?)弹出表单的 div 中可能是一个更好的主意,这样数据实际上是在表单内,但它看起来像虽然它是一个弹出窗口。
  • @Dale 抱歉,这就是我实际上正在做的事情。使用 jquery UI 中的模式,我只需将表单包装在隐藏的 div 中并调用对话框操作。但是,尽管我如何将表单数据存储到父表单上的隐藏变量中,一旦提交表单,我可以轻松地从 php 获取所有数据?它不一定是 json,但认为那将是最简单的。
  • MetalFrog 已经读懂了我的想法,为你 +1 先生
  • 嗯,我好像误解了你要找的东西,约翰。你只是想把整个表单作为模态,然后用PHP收集信息?
  • @MetalFrog 我希望能够允许某人填写第二个表单并将第二个表单数据存储到父表单中的隐藏字段中,这样当该人提交父表单时我可以轻松通过 php 解析隐藏的值。

标签: php jquery json hidden-field


【解决方案1】:

要将表单捕获到输入中以进行发布:

您想.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 );

【讨论】:

    【解决方案2】:

    一个想法是使用 jQuery 创建这样的字段:

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

    如果您以这种方式将值添加到页面,那么您将能够像访问它们一样访问它们,就像它们是 $_POST 的正常部分

    $_POST("hidden_field_name")
    

    【讨论】:

    • 这似乎过于复杂了,此时你也将 DOM 的大小增加了一倍。
    • 非常有效的积分,@MetalFrog;如果您的解决方案适用于 OP,那么我会鼓励他们按照您的说明进行序列化。你的方法要优雅得多,但这种方法对某些人来说可能更可取或有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    • 2020-10-14
    • 1970-01-01
    相关资源
    最近更新 更多