Wordpress + Ajax页面加载+重力形式+重力形式分页符

Mar*_*lli 5 ajax wordpress gravity gravity-forms-plugin gravityforms

我现在有这个设置:

一个WordPress网站,我使用类似于http://barbajs.org/的东西. 所以每个页面内容都通过ajax加载到<main></main>标签.

在其中一个页面(联系页面)中,我有一个重力形式,并使用分页符.表单被制作成步骤,每个步骤都加载到页面内.如果我加载的第一页是该页面(联系页面),一切正常,但是一旦我转到另一页并返回,或者如果我从上一页转到联系页面,表单将不再起作用.

关于如何解决它的任何想法.这是代码部分:

Wordpress:WYSIWYG与短代码

[gravityform id="2" title="false" description="false" ajax="true"]
Run Code Online (Sandbox Code Playgroud)

在加载时,我有这个:( jQuery('#gform_wrapper_2').show()这是唯一可行的),所以我没有得到黑页.

如果我点击下一步(它没有加载下一步),我试过这个:这是我在文档或下一个按钮下找到的 onclick = "..."

jQuery(document).trigger('gform_post_conditional_logic', [2, null, true])
jQuery(document).bind('gform_post_conditional_logic', function(event, formId, fields, isInit){} )
jQuery(document).trigger('gform_post_render', [2, 1]) 
jQuery("#gform_target_page_number_2").val("2");  
jQuery("#gform_2").trigger("submit",[true]); 
Run Code Online (Sandbox Code Playgroud)

我需要一些gform.init()理想的东西:D或类似的东西让我再次绑定表单.

非常感谢!

Mar*_*lli 0

在深入研究重力形式插件后,我能够解决这个问题。

所以这就是我所做的..希望它能帮助将来的人(不确定是否是最好的解决方案,但它有效):

所以“主要”的想法是 barba 或任何你正在使用的东西(在我的例子中是 biggie)正在为一个新页面进行 ajax 调用,你将有一个类似 read / newPageReady 函数的东西,在这里你可以进行一个新的 ajax 调用获取您的表格。

JS:(鉴于gform使用jquery,你可以使用它)

 ready(done) {

   ajax.get(APP.AJAX_URL + '?action=get_form', {

      success: (object) => {

      //console.log(object.data)

      jQuery('.main-content-wrapper').append(object.data)
      jQuery('body #gform_wrapper_2').show()

    }
  })
}


addEvents() {

  // this will check everytime a form is loaded 

   jQuery(document).bind('gform_page_loaded', this.gform)

}


gform(event, form_id, current_page) {

   //Here the form is loaded but not showed.. you can do something like this

    TweenMax.fromTo('.gform_wrapper', 1.2, {autoAlpha: 0}, {autoAlpha:1})
}
Run Code Online (Sandbox Code Playgroud)

函数.php

 add_action( 'wp_ajax_nopriv_get_form', 'get_form' );
 add_action( 'wp_ajax_get_form', 'get_form' );

 function get_form() {

     gravity_form( id_of_your_form,false, false, false, false, true );

    die();
}
Run Code Online (Sandbox Code Playgroud)