#php #jquery
#php #jquery
Вопрос:
Хорошо, возможно, это сложно объяснить. У меня есть форма, созданная с использованием класса PHP Form Builder
Который выглядит как:
$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>
Как я могу заставить часть jQuery публиковать через ее значения ‘units’ при отправке класса PHP Form Builder?
Я посмотрел на добавление метода в класс, но подумал, есть ли более простой способ?
Редактировать:
Форма класса PHP Form Builder является автономной, поэтому, где бы форма jQuery ни находилась на странице, она всегда будет находиться за пределами другой.
Комментарии:
1. Зачем создавать другую форму? Просто добавьте свои элементы в исходную форму, чтобы они отправляли значения вместе с ней.
2. Ах, не объяснил, что когда генерируется PHP-форма, она является автономной.
Ответ №1:
Вы могли бы использовать javascript и перенести значения из второй формы В (скрытые поля в) первой форме?
Или аналогично вы могли бы просто создать форму и скопировать HTML (просмотреть исходный код) и использовать его вместо необработанного php, затем вставить в него свой jQuery drag and drop таким образом.
Комментарии:
1. неэлегантное решение, (я имею в виду, что никоим образом не неуважительно!) но я сделал ваш второй ответ, спасибо!
Ответ №2:
Просто измените свой второй идентификатор «firstForm» на 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)
{
}
Комментарии:
1. Я попробовал это: <тип сценария = «текст / javascript»> $ (‘#firstForm’).submit(функция (событие) { event.preventDefault(); var postData = $ (this).add (‘#SecondForm’).serialize(); $.post ($(this).attr (‘действие’), postData, функция() { window. location = «uploader.php » } )}); </script> но перенаправление окна никогда не вызывается.
Ответ №3:
Не могли бы вы поместить поле формы перетаскивания jQuery в тот же <form>
тег, что и все остальные поля? Это естественный способ сделать это.
Комментарии:
1. Я предполагаю, что он не может поместить пользовательский HTML / jQuery в формы, созданные с использованием класса php form?
2. Без добавления другого пользовательского метода в класс я не могу придумать, как добавить форму ‘jQuery’ к форме PHP.
3. @BobFlemming: поле jQuery просто состоит из флажков и все
<ul>
, верно? Не могли бы вы добавить флажки в форму с помощью PHP Form Builder, а затем поставить<ul>
после формы? (Я не знаком с PHP Form Builder, поэтому приношу извинения, если это невозможно.)