2017-09-19 1 views
1

Ich möchte in der Lage sein, bestimmte JavaScript nur einzubinden, wenn ein Formular eingebettet ist (emedded mit shortcode und php).Gravity Forms - JS bei der Formulareinbettung in die Warteschlange stellen?

Gibt es einen Aktionshaken für Gravity Forms, der ausgelöst wird, wenn ein Formular eingebettet wird? Dann könnte ich so etwas tun.

Wenn es keinen solchen Haken gibt, gibt es einen anderen (nicht hacky) Weg der Archivierung, was ich will?

Antwort

0

Ich fand dieses Beispiel in der Dokumentation.

add_action('gform_register_init_scripts', 'gform_format_money'); 
function gform_format_money($form) { 

    $script = '(function($){' . 
     '$('.gf_money input').each(function(){' . 
      '$(this).val(gformFormatMoney($(this).val()));' . 
     '}).change(function(){' . 
      '$(this).val(gformFormatMoney($(this).val()));' . 
     '});' . 
    '})(jQuery);'; 

    GFFormDisplay::add_init_script($form['id'], 'format_money', GFFormDisplay::ON_PAGE_RENDER, $script); 
} 

Das Problem bei diesem Beispiel ist, dass ich nicht die JS in meinen PHP-Dateien geschrieben gefällt und die add_init_script() Funktion einen String mit JS als Argument benötigt.

konnte ich file_get_contents() verwenden Sie die JS aus der Datei zu erhalten, aber dann werde ich nicht in der Lage sein, um das Skript zu lokalisieren, um die AJAX-URL zu injizieren.

Ich benutze jetzt den Haken wie in der Frage und es funktioniert perfekt.

add_action('gform_register_init_scripts', function() { 
    add_action('wp_enqueue_scripts', function() { 
     wp_enqueue_script('postcode', get_bloginfo('stylesheet_directory') . '/modules/Postcode/assets/js/postcode.js', array('jquery')); 
     wp_localize_script('postcode', 'ajax_object', array('ajax_url' => admin_url('admin-ajax.php'))); 
    }); 
}); 
1

Sie suchen nach gform_enqueue_scripts. Es übergibt das Objekt $form, so dass Sie bestimmen, ob Ihre Skripts für das angegebene Formular geladen werden sollen.

Verwandte Themen