2 个具有相同提交 - POST 的 HTML 表单通过两者的值


2 HTML forms with same submit - POST through values from both

好的,也许很难解释。我有一个使用 PHP 表单生成器类构建的表单

看起来像:

$form = new form("firstForm");
    $form->setAttributes(array(
             "width" => 600,
             "noAutoFocus" => 1,
             "jsIncludesPath" => "lib/php-form-builder-class/includes",
             "action" => "uploader.php"
    ));
    $form->addTextbox("Enter a Title:", 'title' , $row['title']);
    $form->addTextbox("Enter a Promo Code:", "promo" , $row['promo']);
    $form->addWebEditor("Description", "description", $row['description'], array("basic" => 1));
    $form->addWebEditor("Terms and Conditions", "terms", $row['terms'], array("basic" => 1));
    $form->addHidden("img_urls", $row['img_urls']);
    $form->addHidden("destination", $row['destination']);
    $form->addHidden("header", $row['headerimg']);
    $form->addHidden("cmd", "submit_0");
    $form->addButton();
    $form->render();

我想在其中一个元素中添加一些jQuery以允许拖放,所以我制作了另一个表单元素:

?>
    <form id="firstForm"  action="uploader.php" method="post" >
    <ul class="sortable"> 
    Mags Select:
    <?
    foreach ($profiles as $mag) {
    ?>
    <div id="sorty"><input type="checkbox" name="units" value="<? echo $mag ?>" /><label><? echo $mag ?></label><br /></div>
    <? }  ?>
    </ul>
    </form>

当提交 PHP 表单生成器类时,如何使 jQuery 部分通过其值"units"发布?

我看过向类中添加一个方法,但想知道是否有更简单的方法?

编辑:

PHP 表单生成器类表单是自包含的,因此无论 jQuery 表单在页面中的哪个位置,它总是在另一个之外。

您可以使用javascript并将值从第二个表单INTO (隐藏字段)传输到第一个表单中?

或者类似地,您可以构建表单并复制HTML(查看源代码)并使用它而不是原始php,然后以这种方式将jQuery拖放内容放入其中。

只需将第二个"firstForm"ID更改为secondForm,然后执行以下操作:

$('#firstForm').submit(function(event) {
    event.preventDefault();
    var postData = $(this).add('#secondForm').serialize();
    $.post($(this).attr('action'), postData, function() {
     // Complete....
    }
});

由于您的units输入有多个元素,因此您可以将其更改为这样的数组(请注意从unitsunits[]的变化):

<div id="sorty"> <!-- I assume this should be ouside the foreach... !-->
   <? foreach ($profiles as $mag) { ?>
      <input type="checkbox" name="units[]" value="<? echo $mag ?>" />
      <label><? echo $mag ?></label><br/>
   <? } ?>
</div>

然后你会像 PHP 中的数组一样收到这个:

 foreach ($_POST['units'] as $key => $value)
 {
 }

您不能将jQuery拖放表单字段与所有其他字段放在相同的<form>标签中吗?这是自然的方法。