好的,也许很难解释。我有一个使用 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
输入有多个元素,因此您可以将其更改为这样的数组(请注意从units
到units[]
的变化):
<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>
标签中吗?这是自然的方法。