Gravity Forms – Holen Sie sich die aktuelle Seitenzahl
Lesezeit: 5 Minuten
Benutzer110857
Ich habe ein mehrseitiges Formular.
Ich möchte auf der letzten Seite dieses Formulars ein benutzerdefiniertes JavaScript ausführen. Theoretisch muss ich nur die aktuelle Seitenzahl abrufen und eine Bedingung schreiben.
Einfach, oder? Scheinbar nicht.
Meine ursprüngliche Problemumgehung war wie folgt:
if ($('gform_page').last().css('display') !== 'none') {
// perform custom scripts now that the last
// Gravity Form page is being shown
}
aber $('...').css('display') kehrt zurück undefined an jeder Element, an dem ich das innerhalb des Formulars ausprobiert habe. Benutzerdefinierte Skripte wurden jedes Mal ausgelöst, wenn der Benutzer auf die Schaltfläche „Weiter“ klickte. Keine Zigarre.
Dann nach Überprüfung die Gravity Forms-Dokumentationhabe ich zwei nützlich aussehende Ereignisse gefunden: gform_post_render und gform_page_loaded.
Die Dokumentation enthält jedoch keine Anweisungen zum Zugriff auf die Parameter.
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
});
Abgesehen davon, dass ich nicht den richtigen Code habe, vermute ich auch, dass ich den Code nicht an der richtigen Stelle habe, da ich auch Folgendes in functions.php und in header.php erfolglos versucht habe (wie die Dokumentation vermuten lässt):
<?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);
?>
Frage:
Welchen Code benötige ich, um die aktuelle Seitenzahl abzurufen, und was noch wichtiger ist, wo platziere ich diesen Code?
Dafür ist das Schließen einer Frage nicht da. Fragen werden geschlossen, wenn sie nicht zum Thema gehören oder aufgrund fehlender Informationen nicht beantwortet werden können. Es ist ein Zeichen dafür, dass etwas mit der Frage nicht stimmt. Wenn Sie nicht mehr mit der Frage interagieren möchten, können Sie sie einfach ignorieren.
– Modus Tollens
7. Januar um 22:18 Uhr
Benutzer110857
Ich habe es verstanden.
Die Funktion rgpost ist offenbar entscheidend für den Zugriff auf die aktuelle Seitenzahl. Nach einigem Rumprobieren konnte ich den folgenden Code sowohl in functions.php als auch direkt vor der Funktion wp_head() in header.php zum Laufen bringen.
Ich denke tatsächlich, dass McNabs obige Antwort besser ist. 🙂
– ChrisRae
14. April 2015 um 17:50 Uhr
Dies funktioniert nicht richtig, wenn jemand auf die vorherige Schaltfläche klickt und dann erneut auf weiter klickt, die Seitenzahlen steigen um 1 ab.
– Enchiridion
25. August 2018 um 0:31 Uhr
Die vom OP akzeptierte Antwort funktioniert möglicherweise gut, funktioniert jedoch nicht, wenn Sie das Formular zum Paginieren mit Ajax eingerichtet haben.
In diesem Fall konnte ich es nur mit Javascript und der folgenden Methode zum Laufen bringen;
jQuery(document).bind('gform_post_render', function (event, formId, current_page) {
if (current_page == 2) {
// do something
}
});
Die könntest du natürlich verwenden formId Parameter, um dies auf ein bestimmtes Formular zu beschränken
Kann ich den Benutzer zur direkten letzten Seite umleiten? Was wäre die URL der letzten Seite?
– Parthavi Patel
23. September 2021 um 10:21 Uhr
Die aktuell akzeptierte Antwort funktioniert nur, wenn der Benutzer nie zu einer vorherigen Seite im Formular wechselt, wenn doch, dann gform_sourge_page_number hinkt immer um eins hinterher. Ich habe eine bessere Lösung gefunden (mit diesem Hook als Beispiel, aber Sie sollten ihn in jedem Hook verwenden können, an den das $-Formular übergeben wird):
GFFormDisplay::get_current_page( $form_id ) ist eine von vielen praktischen undokumentierten Funktionen.
Ich habe eine kleine Funktion geschrieben, die die aktuelle Seite zurückgibt:
// 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;
}
Neben der akzeptierten Antwort finden Sie hier ein Beispiel zum Suchen der aktuellen Seite und zum dynamischen Suchen, wie viele Seiten das Formular enthält. In diesem Beispiel wird der Schaltflächentext basierend darauf geändert, ob es sich um die letzte Seite des Formulars handelt, anstatt ein Skript einzureihen.
// 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;
}
aakasch
Folgender Code funktioniert bei mir in JavaScript:
$('.gf_step_active .gf_step_number').html()
Es gibt Ihnen die Seitenzahl der aktuellen Seite in mehrseitiger Form.
Suresh Suthar
Verwendung von Jquery
var current_page_ = 1+parseInt(jQuery('.gform_page:visible').index());
13944700cookie-checkGravity Forms – Holen Sie sich die aktuelle Seitenzahlyes
Dafür ist das Schließen einer Frage nicht da. Fragen werden geschlossen, wenn sie nicht zum Thema gehören oder aufgrund fehlender Informationen nicht beantwortet werden können. Es ist ein Zeichen dafür, dass etwas mit der Frage nicht stimmt. Wenn Sie nicht mehr mit der Frage interagieren möchten, können Sie sie einfach ignorieren.
– Modus Tollens
7. Januar um 22:18 Uhr