【问题标题】:How to submit a one form onclick on another form with javascript如何使用javascript提交一个表单onclick另一个表单
【发布时间】:2026-01-04 07:05:02
【问题描述】:

我有两种形式,一种是贝宝按钮,另一种是姓名电子邮件等。 我希望在单击贝宝按钮时提交带有详细信息的表单,如果没有详细信息,则不要将表单提交到贝宝并显示输入错误。 Javascript 是我正在努力解决的问题。

到目前为止的 HTML5:

<form id="info_on_pay" action="" method="post" target="">
          First name:<br>
          <input type="input" name="First_Name" id="First_Name"><br>
          Last name:<br>
          <input type="input" name="Last_Name" id="Last_Name"><br>
          Email:<br>
          <input type="input" name="Email" id="Email"><br>
          Target URL:<br>
          <input type="input" name="Target" id="Target">
        </form>
      </div>
        <div id="price_area"><h1>£10</h1></div>
        <div id="button_placement">
      <form id="pay_button" action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top" onclick="return click();">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="KG8PZVUP3AGVE">
<input type="image" src="https://www.paypalobjects.com/en_US/GB/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal – The safer, easier way to pay online.">
<img alt="" border="0" src="https://www.paypalobjects.com/en_GB/i/scr/pixel.gif" width="1" height="1">
</form>

Javascipt 文件:

function Function() {
  if ("pay_button").onclick();
  document.getElementById("info_on_pay").submit();
};

【问题讨论】:

  • 我想,您应该考虑将您的表单放在“成功”页面(用户付款成功后的页面)。
  • 在交易之前我想要它,所以请你帮帮我。

标签: javascript forms form-submit


【解决方案1】:

如果您使用 jQuery,解决方案将非常简单(它简化了执行 AJAX 请求):

$("input[name=submit]").on("click", function(){

    var pay_form = $("#pay_button");  // payment form
    var inf_form = $("#info_on_pay"); // form we want to send before payment
    var data = inf_form.serialize();  // form data ready to send

    var ajax = $.post("info_on_pay.php", data); // sending data to script info_on_pay.php

    ajax.done(function(){     // after ajax-request sucessfully complete...
       pay_form[0].submit();  // ...we submit actual payment form
    });

    return false; // it prevents default payment form submitting
});

如您所见,我们拦截了对 paypal 按钮的所有点击,并执行将表单数据发送到特殊脚本的 ajax-request。此脚本应处理并保存第一个表单中的订单详细信息并返回有效答案(甚至为空)。

【讨论】:

  • 即使第一个表单没有数据,表单仍然会转到贝宝?
  • 您的脚本可以检查用户提供的数据,如果某些字段为空,则返回 http-error 500。在这种情况下,将不会提交 paypal 表单。
  • 你是说提供的代码给出了一个 http-error 500,因为这不是我在本地看到的,它只是继续到贝宝。
  • 首先,您必须确保 javascript 可以正常工作并发送 ajax 请求。您可以使用浏览器的内置开发工具进行检查。其次,您必须检查 ajax-requests 返回的答案。您的脚本中可能存在 php 错误,这些错误会阻止使用 header(...) 函数发送正确的 http 代码。也许您应该使用表单处理脚本中的更多详细信息和代码来扩展您的问题。
  • 哦,我想我知道问题所在。我从文件管理器而不是在服务器上运行它。
最近更新 更多