2017-09-19 70 views
1

我希望只有在嵌入表單的情況下才能入隊某些JavaScript(用shortcode和php編寫)。重力形式 - 表單嵌入時嵌入JS?

是否存在重力窗體的動作鉤子,當表單嵌入時觸發?然後我可以做這樣的事情。

add_action('some_gforms_hook', 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'))); 
    }); 
}); 

如果沒有這樣的鉤子,有沒有另一種(非哈希)的方式來歸檔我想要的?

回答

0

我在文檔中找到了這個例子。

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

這個例子的問題是,我不喜歡寫在我的PHP文件中的JS和add_init_script()功能需要一個字符串JS作爲參數。

我可以使用file_get_contents()從文件中獲取JS,但是我不能本地化注入AJAX url的腳本。

我現在使用鉤子作爲問題,它的作品完美。

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

您正在尋找gform_enqueue_scripts。它通過$form對象,因此您可以確定是否應該爲給定表單加載腳本。