我有一个gravity表单联系人表单,它驻留在一个页面上,但我想要的是一个站点范围的链接,它将打开该表单,并以动态模式显示它。
一种方法是将表单插入模板端的标记中,这样表单就已经存在于每个页面上了。但这意味着加载了大量的标记和gf脚本,而这些脚本在很大程度上都不需要存在。
因此,我收集了一些js,从页面中获取表单标记并将其插入DOM,加载脚本,然后在twitter引导模式中显示结果。
事物的表示端按预期工作,但js条件逻辑等都没有得到应用。我知道js正在加载,因为Im将每个脚本的状态输入控制台。日志-我得到“200”,没有错误。但脚本似乎看不到表单,或者没有正确实例化。
为了测试js端,我还尝试通过以下方式将资源手动加载到头部:
<?php gravity_form_enqueue_scripts(1, true); ?>
但这也行不通。
下面是我使用的js,有人知道如何让它在表单中激发生命吗?是否有我应该使用的回调<非常感谢-ben
jQuery(document).ready(function(){
// load contact form with ajax
jQuery(".contact_btn").click(function(){
jQuery.ajaxSetup ({ cache:false });
var ajax_load = "<img height=\'50px\' width=\'50px\' src=\'/assets/img/medloading.gif\' class=\'tr_spinner\' alt=\'loading...\' style=\'align:center, top:50%\' />";
var loadUrl = "/contact-3/";
// load the scripts dynamically
jQuery.when(
jQuery.getScript("/plugins/gravityforms/js/gravityforms.js?ver=1.7.6", function(data, textStatus, jqxhr) {console.log(jqxhr.status);}), // console logs to get confirmation that its loaded
jQuery.getScript("/plugins/gravityforms/js/conditional_logic.js?ver=1.7.6", function(data, textStatus, jqxhr) {console.log(jqxhr.status);}),
jQuery.getScript("/plugins/gravityforms/js/datepicker.js?ver=1.7.6", function(data, textStatus, jqxhr) {console.log(jqxhr.status);}),
jQuery.getScript("/plugins/gravityforms/js/jquery.textareaCounter.plugin.js?ver=1.7.6", function(data, textStatus, jqxhr) {console.log(jqxhr.status);}),
jQuery.getScript("/plugins/gravityforms/js/jquery.maskedinput-1.3.min.js?ver=1.7.6", function(data, textStatus, jqxhr) {console.log(jqxhr.status);})
).then(function(){
// insert the content into the DOM
jQuery("#contact-form .modal-body").html(ajax_load).load(loadUrl + " .entry-content");
// load it in the modal
jQuery("#contact-form").modal({ keyboard: false, show: true, backdrop: true });
});
// hijack the <a> link
return false;
});
});