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

时间:2011-05-10 10:44:49

标签: php jquery

好的,也许很难解释。我有一个使用PHP Form Builder Class

构建的表单

看起来像:

$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部分发布?

我已经看过在课堂上添加一个方法,但是想知道是否有更简单的方法?

编辑:

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

3 个答案:

答案 0 :(得分:2)

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

或者类似地你可以构建表单并复制HTML(查看源代码)并使用它而不是原始的php,然后将你的jQuery拖放到那里。

答案 1 :(得分:2)

只需将您的第二个“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)
 {

 }

答案 2 :(得分:0)

你能不能将jQuery拖放表单字段放在与所有其他字段相同的<form>标记中?这是自然而然的方式。