programing

Gravity Forms - 현재 페이지 번호 가져오기

batch 2023. 4. 6. 21:22
반응형

Gravity Forms - 현재 페이지 번호 가져오기

저는 여러 페이지로 된 양식이 있습니다.

이 폼의 마지막 페이지에서 커스텀 자바스크립트를 실행하고 싶습니다.이론적으로 현재 페이지 번호를 불러와서 조건만 작성하면 됩니다.

간단하죠?아닌 것 같아요.

당초의 회피책은 다음과 같습니다.

if ($('gform_page').last().css('display') !== 'none') {
    // perform custom scripts now that the last
    // Gravity Form page is being shown
}

그렇지만$('...').css('display')돌아온다undefined모든 요소에서 이걸 써봤어요.사용자가 "다음" 버튼을 누를 때마다 사용자 지정 스크립트가 실행되고 있었습니다.시가 없습니다.

그리고 Gravity Forms 문서를 검토한 후 유용해 보이는 두 가지 이벤트를 발견했습니다.gform_post_render그리고.gform_page_loaded.

단, 이 매뉴얼에서는 파라미터에 액세스하는 방법에 대해 설명하고 있지 않습니다.

jQuery(document).bind('gform_page_loaded', function(event, form_id, current_page){
    console.log(current_page);
    // returns nothing when loaded in the footer
    // returns [Object, object] when placed in an HTML field in the form
});

올바른 코드를 가지고 있지 않을 뿐만 아니라, 이하의 기능을 시험해 본 결과, 올바른 위치에 코드가 없는 것이 아닌가 하는 생각이 듭니다.php 및 in header.http (설명서에 제시된 바와 같이) :

<?php
function enqueue_custom_script($form, $is_ajax){
    if ($is_ajax) :
        echo '<script>console.log(current_page);</script>';
    endif;
}
add_action("gform_enqueue_scripts", "enqueue_custom_script", 10, 2);
?>

질문:.

현재 페이지 번호를 취득하려면 어떤 코드가 필요합니까?또한 그 코드를 어디에 배치해야 합니까?

알겠어요.

이 기능은 현재 페이지 번호에 액세스하는 데 매우 중요한 것으로 보입니다.스스로 몇 번인가 만지작거린 후에, 양쪽의 기능에 대해 이하의 코드를 사용할 수 있었습니다.php 및 header.http의 wp_head() 함수 바로 앞에 있습니다.

function run_script_on_last_page($form) {
    if (!is_admin()) {
        $current_page = rgpost('gform_source_page_number_' . $form['id']) ? rgpost('gform_source_page_number_' . $form['id']) : 1;
        if ($current_page == 10) {
            wp_enqueue_script('custom_script', get_template_directory_uri() . '/js/custom_script.js', array('jquery'), null, true);
        }
    }
}
add_action('gform_enqueue_scripts_63', 'run_script_on_last_page');

위의 코드를 복사/붙이는 경우 다음 사항을 확인하십시오.

  • 교체하다10확인할 페이지와 함께
  • 파라미터가 올바른지 확인합니다.wp_enqueue_script
  • 교체하다63폼 ID로

유용한 리소스:

  • 관한 문서의 이 섹션은gform_validation필터
  • 매뉴얼을 참조해 주십시오.

승인된 OPs 답변은 정상적으로 동작할 수 있지만 Ajax를 사용하여 페이지 번호를 매기는 폼 설정이 있는 경우에는 동작하지 않습니다.

이 경우 Javascript와 다음 방법밖에 사용할 수 없습니다.

http://www.gravityhelp.com/documentation/page/Gform_post_render

jQuery(document).bind('gform_post_render', function (event, formId, current_page) {
    if (current_page == 2) {
        // do something
    }
});

물론, 당신은 그것을 사용할 수 있다.formId특정 형식으로 제한하기 위한 매개 변수

현재 승인된 답변은 사용자가 폼의 이전 페이지로 이동하지 않는 경우에만 작동합니다. 이동했을 경우, 이동했을 경우,gform_sourge_page_number항상 1씩 뒤처집니다.더 나은 솔루션을 찾았습니다(예를 들어 이 훅을 사용하면 $form이 전달된 훅 내에서 사용할 수 있습니다).

function run_script_on_last_page( $form)  {
  if ( !is_admin() ) {
    if ( \GFFormDisplay::get_current_page( $form['id'] ) == 10) {
        wp_enqueue_script( 'custom_script', get_template_directory_uri() . '/js/custom_script.js', array( 'jquery' ), null, true );
    }
  }
}

add_action( 'gform_enqueue_scripts_63', 'run_script_on_last_page' );

GFFormDisplay::get_current_page( $form_id )는 많은 편리한 문서화되어 있지 않은 기능 중 하나입니다.

현재 페이지를 반환하는 작은 함수를 작성했습니다.

// Get Gravity Forms Current Page
// Syntax: gf_current_page()
function gf_get_current_page()
{
    return rgpost('gform_source_page_number_' . $_POST['gform_submit']) ? rgpost('gform_target_page_number_' . $_POST['gform_submit']) : 1;
}

또, 현재 페이지를 찾아, 폼내의 페이지수를 동적으로 찾아내는 예를 나타냅니다.이 예에서는 스크립트를 큐잉하는 대신 양식의 마지막 페이지인지 여부에 따라 버튼 텍스트를 변경합니다.

// Change the text of the 'Next' form button to 'Submit' when
// the current page is the final page of the form
add_filter( 'gform_next_button', 'next_to_submit', 10, 2 );
function next_to_submit( $next_button, $form ) {
    $replacement_next_button = $next_button;
    $last_page_number = 1;
    foreach ($form['fields'] as $field) {
        $is_hidden = RGFormsModel::is_field_hidden( $form, $field, array() );
        if ($field['pageNumber'] > $last_page_number && !$is_hidden) {
            $last_page_number = $field['pageNumber'];
        }
    }
    $current_page_number = rgpost('gform_source_page_number_' . $form['id']) ? rgpost('gform_source_page_number_' . $form['id']) : 1;
    if ($last_page_number === $current_page_number) {
        // If the current page is the final page
        $replacement_next_button = str_replace( 'Next', 'Submit', $next_button );
    }
    return $replacement_next_button;
}

JavaScript에서 사용할 수 있는 코드는 다음과 같습니다.

$('.gf_step_active .gf_step_number').html()

현재 페이지의 페이지 번호를 여러 페이지 형식으로 제공합니다.

Jquery 사용

  var current_page_ = 1+parseInt(jQuery('.gform_page:visible').index());

다음을 사용해 보십시오.

var current_visible_page = jQuery('.gf_step_active .gf_step_number').html();
console.log(current_visible_page);

콘솔에서 위의 방법을 사용하여 작동 방식을 확인합니다.

언급URL : https://stackoverflow.com/questions/15144311/gravity-forms-get-current-page-number

반응형