【问题标题】:How to add an extra submit button to gravity form?如何在重力表单中添加额外的提交按钮?
【发布时间】:2020-08-02 09:32:18
【问题描述】:

我的网站已上线,需要进行一些自定义才能接受 PayPal 付款和卡付款。这是一个非营利(慈善)网站。

一些信息:

php: 7.4 ; WP: 5.4; theme: Avada 6.2.2; Gravity form: 2.4.17

网站网址:https://www.sevenspikesrelief.org.uk/test/

我的问题是,如何在 PayPal 的表单末尾添加一个按钮并让它做两件事:

1- 提交表单 2- 将用户重定向到贝宝

当我使用 JS 执行此操作时(当用户单击 PayPal 选项时更改表单操作):

var paypal_radio_input = document.querySelector('#choice_9_16_1');
paypal_radio_input.addEventListener('click', ()=> {
  test_form.action="https://www.paypal.com/gb/fundraiser/charity/2428261";
});

我被重定向到 PayPal,但我看到的只是:

我们很抱歉。

在此位置似乎没有找到任何东西。也许尝试以下链接之一或搜索?”

还有一个控制台错误提示:

Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'nonce-fYNoVf4KWQbtPUlPUHWImFkshC0qreIuW5C2HMLEKvaOv4J3' 'self' https://*.paypal.com https://*.paypalobjects.com 'unsafe-inline' 'unsafe-eval'". Note that 'unsafe-inline' is ignored if either a hash or nonce value is present in the source list.

如果有帮助,这里是表单的 HTML:

    <form
  method="post"
  enctype="multipart/form-data"
  id="gform_9"
  class="chceckout_form"
  action="/test/"
>
  <div class="gform_heading">
    <h3
      class="gform_title fusion-responsive-typography-calculated"
      data-fontsize="20"
      data-lineheight="30px"
      style="--fontSize:20; line-height: 1.5; --minFontSize:20;"
    >
      Checkout test
    </h3>
    <span class="gform_description"></span>
  </div>
  <div class="validation_error">
    There was a problem with your submission. Errors have been highlighted
    below.
  </div>
  <div class="gform_body">
    <ul
      id="gform_fields_9"
      class="gform_fields top_label form_sublabel_above description_above"
    >
      <li
        id="field_9_5"
        class="gfield gfield_error amount_field gfield_price gfield_price_9_5 gfield_product_9_5 gfield_contains_required field_sublabel_above field_description_above hidden_label gfield_visibility_visible"
      >
        <label class="gfield_label" for="input_9_5"
          >Amount<span class="gfield_required">*</span></label
        >
        <div class="ginput_container ginput_container_product_price">
          <input
            name="input_5"
            id="input_9_5"
            type="text"
            value=""
            class="medium ginput_amount"
            placeholder="Amount"
            aria-required="true"
            aria-invalid="true"
          />
        </div>
        <div
          id="validation_message_9_5"
          class="gfield_description validation_message"
          aria-live="polite"
        >
          This field is required.
        </div>
      </li>
      <li
        id="field_9_16"
        class="gfield payment_method_field gfield_contains_required field_sublabel_above field_description_above gfield_visibility_visible"
      >
        <label class="gfield_label"
          >Payment Method<span class="gfield_required">*</span></label
        >
        <div class="ginput_container ginput_container_radio">
          <ul class="gfield_radio" id="input_9_16">
            <li class="gchoice_9_16_0">
              <input
                name="input_16"
                type="radio"
                value="Card"
                checked="checked"
                id="choice_9_16_0"
              /><label for="choice_9_16_0" id="label_9_16_0">Card</label>
            </li>
            <li class="gchoice_9_16_1">
              <input
                name="input_16"
                type="radio"
                value="Paypal"
                id="choice_9_16_1"
              /><label for="choice_9_16_1" id="label_9_16_1">Paypal</label>
            </li>
          </ul>
        </div>
      </li>
      <li
        id="field_9_4"
        class="gfield card_field field_sublabel_hidden_label field_description_above hidden_label gfield_visibility_visible"
      >
        <label
          class="gfield_label gfield_label_before_complex"
          for="input_9_4_1"
          >Card</label
        >
        <div
          class="ginput_complex ginput_container ginput_container_creditcard"
          id="input_9_4"
        >
          <div class="ginput_full" id="input_9_4_1_container">
            <div id="input_9_4_1"></div>

            <label
              for="input_9_4_1"
              id="input_9_4_1_label"
              class="hidden_sub_label screen-reader-text"
              >Card Details</label
            >
          </div>
          <div class="ginput_full" id="input_9_4_5_container">
            <input
              type="text"
              name="input_4.5"
              id="input_9_4_5"
              value=""
              placeholder="Cardholder Name"
            />
            <label
              for="input_9_4_5"
              id="input_9_4_5_label"
              class="hidden_sub_label screen-reader-text"
              >Cardholder Name</label
            >
          </div>
        </div>
      </li>
      <li
        id="field_9_22"
        class="gfield paypal_note_field gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_above field_description_above gfield_visibility_visible"
        style="display: none;"
      >
        You must have a PayPal account to donate via PayPal and you will be
        redirected to our page on PPGF website. JZK
      </li>
      <li
        id="field_9_23"
        class="gfield gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_above field_description_above gfield_visibility_visible"
        style="display: none;"
      ></li>
    </ul>
  </div>
  <div class="gform_footer top_label">
    <input
      type="submit"
      id="gform_submit_button_9"
      class="gform_button button"
      value="Donate Now"
      onclick='if(window["gf_submitting_9"]){return false;}  window["gf_submitting_9"]=true;  '
      onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_9"]){return false;} window["gf_submitting_9"]=true;  jQuery("#gform_9").trigger("submit",[true]); }'
    />
    <input type="hidden" class="gform_hidden" name="is_submit_9" value="1" />
    <input type="hidden" class="gform_hidden" name="gform_submit" value="9" />

    <input
      type="hidden"
      class="gform_hidden"
      name="gform_unique_id"
      value="5e9d603e301a0"
    />
    <input
      type="hidden"
      class="gform_hidden"
      name="state_9"
      value="WyJbXSIsIjU5NzZiZmEwMGZmOTI0MTM5NWFkNmRhNDQwMGZiMzFhIl0="
    />
    <input
      type="hidden"
      class="gform_hidden"
      name="gform_target_page_number_9"
      id="gform_target_page_number_9"
      value="0"
    />
    <input
      type="hidden"
      class="gform_hidden"
      name="gform_source_page_number_9"
      id="gform_source_page_number_9"
      value="1"
    />
    <input type="hidden" name="gform_field_values" value="" />
  </div>
</form>

【问题讨论】:

  • 您提供的错误信息“我们很抱歉。在此位置似乎没有找到任何内容。请尝试以下链接之一或搜索?”。不足以确定出了什么问题。测试网站,没有向 PayPal 提交,它只是说“您的提交有问题。错误已在下面突出显示。”,没有突出显示。
  • @Preston,对不起,我更改了上面的网址。
  • 在与 Preston 讨论之后,我发现表单被提交并发生重定向,但没有数据保存在我的服务器上,因为 GET 请求。请问有什么提示吗?
  • 表单实际上并未提交到您的服务器。您将表单(POST 方法)提交到 PayPal,这是无稽之谈。您需要将表单提交到您的服务器,而 PayPal 不接受表单发布。

标签: wordpress paypal gravity-forms-plugin gravityforms


【解决方案1】:

https://www.paypal.com/gb/fundraiser/charity/2428261 的重定向是 POST 类型,带有表单数据,看起来 PayPal 页面只接受常规 GET 页面加载

【讨论】:

  • 谢谢您的回复。我已经包含了来自检查元素的表单的 HTML。我还简化了用于测试目的的表单。 ..但是,我仍然无法解决提供信息的问题。你能建议一个解决方案吗?赞赏!
  • 我通过将方法动态更改为 GET 来解决它,所以现在它重定向成功但我有一个问题和一个问题.. 问题是在前端输入的数据(例如数量)是提交时未保存,问题是:由于我们没有在 GET 请求上发送任何信息,它是否仍然存在?
  • 你正试图同时做两件事。您需要先完成第一件事,然后再做第二件事,而第二件事需要谨慎地单独进行,而不是在客户端。
  • 我最后所做的就是提交表单,输入的数据在提交时会自动保存。那么为什么表单不保存在贝宝上(get)但仍然保存在卡上(post)?
  • 您正在重定向到 PayPal 并且没有向您的服务器发布任何内容。您需要发布到您的服务器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-21
  • 2020-06-17
  • 1970-01-01
  • 2012-10-29
  • 2019-09-25
相关资源
最近更新 更多