通过一次提交发送双表单,同时将电子邮件字段从第一个表单拉到第二个表单

Posted

技术标签:

【中文标题】通过一次提交发送双表单,同时将电子邮件字段从第一个表单拉到第二个表单【英文标题】:Sending Dual Forms with one submit, while pulling the email field from first Form into the second 【发布时间】:2011-03-14 15:58:22 【问题描述】:

我有两个表格需要发送 - 第一个表格是一个 php 邮件程序,它从一堆字段中获取信息并将其邮寄给一个recipent。该表单有一个复选框,如果选中,我需要通过另一个表单将来自该表单的电子邮件发送到列表服务器,将它们添加到邮件列表中。当单击第一个表单中的提交按钮时,我需要这一切发生。任何人都可以帮助我解决问题。谢谢。

表格

<form class="form_1" method="post" enctype="multipart/form-data" onSubmit="return validate()">
<div class="field">
<div class="text2">
              <input type="text" id="name" value="<?php echo $_POST['name'];?>" name="name" title="Name" />
            </div>
            <!--text2-->
            <div class="req">*</div>
            <!--req--> 
          </div>
          <!--field-->
          <div class="field field_right">
            <div class="text2">
              <input type="text" id="email" name="email" value="<?php echo $_POST['email'];?>"  title="Email" />
            </div>
            <!--text2-->
            <div class="req">*</div>
            <!--req--> 
          </div>

注册时事通讯 上传简历:

          <div class="clearer"></div>
          <br />
          <div class="field">
            <input type="submit" value="Send" class="btn3" />
          </div>
          <!--field-->
        </form>

表格 2

<form action="http://www.example.com/mailing_list.html" method="post" name="xxxxxxx" onSubmit="return (!(UPTvalidateform(document.UPTmxxxxxx)));">
<input type="hidden" name="submitaction" value="3">
<input type="hidden" name="mlid" value="xxxxxx">
<input type="hidden" name="siteid" value="xxxxxx">
<input type="hidden" name="tagtype" value="q2">
<input type="hidden" name="demographics" value="-1">
<input type="hidden" name="redirection" value="http://www.xxxx.com/thankyou.php">
<input type="hidden" name="uredirection" value="http://">
<input type="hidden" name="welcome" value="">
<input type="hidden" name="double_optin" value="">
<input type="hidden" name="append" value="">
<input type="hidden" name="update" value="on">
<input type="hidden" name="activity" value="submit">

<tr><td colspan="2"></td></tr><tr><td> </td><td> <div class="text1"><input type="text" name="email" id="email" />

</div></td></tr><tr><td colspan="2"><button type="submit" name="send" value="send" class="button1"></button></td></tr>

【问题讨论】:

【参考方案1】:

在您的表单上,将按钮绑定回 javascript 事件

<input type = 'button' value='Submit!' onclick='submitForms()' />

然后使用 javascript 函数 submitForms,实际提交您的两个表单。

    document.forms["form1"].submit();
    document.forms["form2"].submit();

【讨论】:

这依赖于浏览器来发出两个请求。通常,浏览器一次只会处理一个请求。那么这种方法可以依赖跨浏览器工作吗?如果不对其进行测试,我会想象提交第二个表单的调用会停止第一个表单的提交。 确实如此。我想你可以用一些花哨的 AJAX 做同样的事情,但你使用 CURL 的建议可能更优雅,假设 OP 已经或可以使 CURL 可用。【参考方案2】:

您可能需要使用PHPs curl wrapper 进行第二次提交,这样您就只有一张表格供用户填写。有什么理由必须有两张表格吗?

所以它会像这样工作:

    用户提交表单 代码发送第一封电子邮件 如果选中复选框,则将curl 请求提交到第二个表单 完成

最近的 SO 答案包含对 curl 发布请求过程的简单介绍:How to issue HTTP POST request?

【讨论】:

以上是关于通过一次提交发送双表单,同时将电子邮件字段从第一个表单拉到第二个表单的主要内容,如果未能解决你的问题,请参考以下文章

使用特定变量在Google表单提交上发送电子邮件

向表单添加动态字段(Chronoform)

命令外部字段值随表格发送

在提交按钮上反应原生表单处理

Jquery 发送到电话单击链接以填充键盘表单中的文本字段

Formik 在空字段上也显示错误