2017-09-15 1 views
5

양식 페이지 : 내가 http://barbajs.org/ 비슷한을 사용하고워드 프레스 + 아약스 페이지 로딩 + 중력 형태 + 중력 나는이 순간에 설정 한 휴식

워드 프레스 사이트의 모든 페이지의 콘텐츠는 아약스를 통해로드 그래서 <main></main> 태그로

페이지 중 하나 (연락처 페이지)에 중력 양식이 있으며 페이지 나누기가 사용 중입니다. 양식은 단계별로 만들어지고 각 단계는 페이지 내부에로드됩니다. 로드하는 첫 번째 페이지가 해당 페이지 (연락처 페이지) 인 경우 모든 것이 작동하지만 다른 페이지로 이동하여 되돌아 오는 순간 또는 이전 페이지에서 연락처 페이지로 이동하면 양식이 더 이상 작동하지 않습니다. .

문제를 해결하는 방법에 대한 아이디어.

워드 프레스 : 이 코드의 일부이다 단축 코드와 WYSIWYG

[gravityform id="2" title="false" description="false" ajax="true"] 

부하에, 나는이 있습니다 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]); 
에서 문서 또는 다음 버튼에서 발견 된이

내가해야합니다 gform.init()과 같은 것이 이상적입니다. D 또는 비슷한 양식으로 다시 바인딩 할 수있는 유사한 것.

고맙습니다.

+1

어딘가에 살고 있습니까? – shramee

+0

당신의 설명은 꽤 괜찮은 것이지만, 나는이 코드를 디버깅 할 수 있고 무엇이 잘못되었는지를 볼 수 있도록이 라이브를보아야합니다. 또는 적어도 자바 스크립트 로딩 코드 스 니펫을 게시 할 수 있습니까? 어떻게 트리거됩니까? –

+0

중력 양식 docs https://docs.gravityforms.com/testing-for-a-themeplugin-conflict에서 설명한대로 테마/플러그인 충돌을 점검하는 것도 고려해 볼 수 있습니다. –

답변

0

비트를 중력 양식 플러그인으로 파고 나서이 문제를 해결할 수있었습니다.

그래서 "주"아이디어가 BARBA 또는 당신이 사용하는 어떤 (이다 : 그래서 여기

내가 .. 그것은 미래에 누군가가 도움이되기를 바랍니다 (최적의 솔루션 있는지 확실하지 않습니다 만 작동) 한 일이다 내 경우에는 biggie)가 새 페이지에 대한 ajax 호출을 작성하고 ready/newPageReady 함수와 같은 것을 갖게됩니다. 여기에서 양식을 얻기 위해 새로운 ajax 호출을 작성합니다.

JS : 그것은 올바른 솔루션의 경우

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}) 
} 

Functions.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(); 
} 
0

확실하지 않음 (즉, gform 감안할 때이 jQuery를 사용하고 당신이 그것을 사용할 수 있습니다)하지만 난에 의해 gform.init() 같은 뭔가를 관리 eval()과 함께 양식의 스크립트 태그를 호출합니다. 이 스크립트는 각 양식 다음에 플러그인에 의해 삽입됩니다.

예를 들어, 당신은 아약스와 페이지를 변경 한 후, 같은 것을 할 :

// After changing page with ajax : 

var scripts = myNewForm.querySelectorAll('script'); // where "myNewForm" is the container including the new form added after an ajax call 

for (var i = 0; i < scripts.length; i++) { // "For" loop in case there is more than one script added by the plugin 

    eval(scripts[i].innerHTML); // --> this will init the new form 
} 

는 아약스 호출 후이를 호출해야합니다.