同一页面使用PHP引擎的多个表单一次性提交

我有多个查询表单,它们都调用用于电子邮件转发的同一个文件,所以它的标题是 emailForwarding.php。我显然设法在前端使用 jQuery 分离表单,但是 emailForwarding.php 中的脚本的处理次数与查询表单的数量相同。我只希望 php 脚本适用于我提交的表单。


我尝试使用 .eq() 和 .index() 隔离脚本的效果,并传递一个名为 $arg 的参数来仅触发包含所选表单的 div.vendor-wrapper 的表单提交事件。


单个.php:


echo

 '<div class="vendor-wrapper"><form method="post" action="" name="form" class="commentForm">

<textarea name="comment" placeholder="Please enter your message in the space of 300 characters and hit the Confirm button." value="" class="message" maxlength="300"></textarea>

<input name="confirm" type="button" value="Confirm">

<input class="send" name="send'.$i++.'" type="submit" value="Send">

<input type="hidden" name="position" val="">

</form></div>;


<script>

$('.confirm').click(function(){

$('.vendor-wrapper').find('.position').val('');

var index = $(this).parents('.vendor-wrapper').index()-1;

if($('.vendor-wrapper').eq(index).find('.message').val()){

$('.vendor-wrapper').eq(index).find('.confScreen').show();

$('.vendor-wrapper').eq(index).find('.position').val(index);

}

});

</script>

电子邮件转发.php:


if(isset($_POST['position'])):

$arg = 'send';

$arg .= $_POST['position'];

echo "<script>console.log('PHP: ".$arg."');</script>";

if(isset($_POST[$arg])):

 if(isset($_POST['comment'])):

   $EmailCustomer = $_POST['email'] = $current_user->user_email;

//The rest of the script for email processing omitted.

表单提交的次数与页面上的表单数量相同。


holdtom
浏览 242回答 2
2回答

守着星空守着你

在 single.php 的标签前插入 include() 禁用重复提交。

慕后森

你能提供更多的代码吗?因为我试图重现该问题,但无法使用提供的代码。因为,代码中不清楚 $_POST['position'] 代表什么。echo 语句用户是否为任何循环。您可以尝试为 FORM 取一个不同的名称吗?<form&nbsp;method="post"&nbsp;action=""&nbsp;name="form-$i"&nbsp;class="commentForm">
打开App,查看更多内容
随时随地看视频慕课网APP