1

我有一个 Ninja Forms 表单,它要求提供电子邮件地址和一个 optin 复选框。用户提交后,它会打开一个带有后续表单的弹出窗口(使用插件 Popup Maker),要求用户输入更多(可选)详细信息。由于后续表单有自己的提交表,我想将第一个表单的电子邮件地址传递给弹出的后续表单,以便用户不必再次输入。理想情况下,它将所有这些信息保存到一个提交表中,但我猜 Ninja Forms 不是这样构建的(?)。

使用提交处理挂钩(http://developer.ninjaforms.com/codex/submission-processing-hooks/),我将以下代码添加到主题的functions.php

add_action( 'ninja_forms_after_submission', 'ninja_forms_save_email_to_cookie' );

function ninja_forms_save_email_to_cookie( $form_data ){
    $cookie_name = "nl_email";
    $cookie_value = $form_data;
    setcookie($cookie_name, $cookie_value); // Session cookie.
}

但是没有cookie被保存。

对于后续表单,我在主题中有这个,它应该在对后续表单进行任何其他处理之前用 cookie 的值functions.php填充隐藏的表单字段(字段键是):email_1519816442526

add_filter( 'ninja_forms_submit_data', 'ninja_forms_submit_followup' );

function ninja_forms_submit_followup( $form_data ) {
    $cookie_name = "nl_email";
    if(!isset($_COOKIE[$cookie_name]) && $form_data['id'] == 2) {
        $form_data['fields']['email_1519816442526']['value'] = $_COOKIE[$cookie_name]; // Update the submitted field value.
    }

    return $form_data;
}

提交挂钩是否适合集成此功能?还是通过自定义操作更好地完成?自定义操作是否在functions.php其他地方或其他地方定义?我在 Ninja Forms 文档中找不到这方面的信息。

4

1 回答 1

0

您需要查看 NinjaDev 文档,其中提供了我们可以使用 JS 更改字段值的方式。我们需要传递值并触发更改事件。

请参阅此处的说明

我也需要这个,所以我研究并实现了这个。我知道我迟到了,但如果有人从中受益,那么值得在这里分享。

下面的工作代码:

<!-- HTML Code Starts -->

<form class="short-form" method='post'>
  <input type="email" placeholder="Enter email" value="" id="shortEmail">
  <input type="button" class="popup-class-name" name="Proceed" value="Proceed" onclick="passValue();">
</form>

<!-- HTML Code Ends -->
<!-- JS Script Starts -->

function passValue() {
    var shortFormEmail, longFormEmail;
    var fieldID = 11;     // Target ID of the long form Email field
    shortFormEmail = document.getElementById('shortEmail');
    longFormEmail = shortFormEmail.value;
    jQuery('#nf-field-' + fieldID).val(longFormEmail).trigger('change'); //from ninja Dev
         // This will not work on any online IDE. Try it in actual ninja forms environment
  }

<!-- JS Script Ends -->

这仅适用于 Ninja Forms 环境。

于 2022-02-17T21:18:06.653 回答