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로
유용한 리소스:
승인된 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
'programing' 카테고리의 다른 글
1개의 CDN 또는 여러 개의 CDNS에서 파일 로드 (0) | 2023.04.06 |
---|---|
Angular가 자동으로 'ng-invalid' 클래스를 '필수' 필드에 추가하고 있습니다. (0) | 2023.04.06 |
'string' 유형에 'replaceAll' 속성이 없습니다. (0) | 2023.04.06 |
React를 사용하여 파일 구성 요소 업로드JS (0) | 2023.04.06 |
JavaScriptSerializer - 열거를 문자열로 JSON 직렬화 (0) | 2023.04.06 |