我正在使用acf\\U表单用ajax编辑我的WP帖子。我已经做好了设置,工作正常,我可以编辑帖子并提交新数据,而无需刷新页面。成功完成后,我还可以加载新内容,而无需刷新页面。
但是,acf表单中的任何JS在重新加载后都无法工作。我怎样才能让它工作呢,这是我目前所拥有的
(function($) {
//// This saves without reloading the page
var pathtopage = window.location.pathname;
acf.do_action(\'ready\', $(\'body\'));
$("#content").on("submit", "#myform", function(e) {
e.preventDefault();
});
acf.add_action(\'submit\', function($form) {
$.ajax({
url: window.location.href,
method: \'post\',
data: $form.serialize(),
success: function(data) {
//// Attempting to reinitialise the JS in the form
$(document).trigger(\'acf/setup_fields\', $(\'#myform\'));
acf.validation.toggle($form, \'unlock\');
//// reload the content and the edit form ready to go again
$(\'#content\').load(pathtopage + \' #content\');
}
});
});
})(jQuery);
在文档中,它声明“在附加的HTML中放置以下内联JS,或者在完成AJAX附加后运行JS。这将允许ACF初始化新添加的HTML中的字段。”
<script type="text/javascript">
(function($) {
// setup fields
acf.do_action(\'append\', $(\'#popup-id\'));
})(jQuery);
</script>
但是,我不知道如何在我的设置中包括这个,因为我没有使用弹出窗口I;我正在重新加载表单。非常感谢您的帮助。
SO网友:Dusty48
可能为时已晚,但它可能会帮助你或其他人:
我只是遇到了一个类似的问题,在寻找解决方案时,我发现了你的问题。现在,我找到了一个解决方案,它可能也会帮助你。
与您的设置类似,已加载acf\\U表单,但未加载位置字段(仅加载容器)。文件acf输入。min.js是在页面加载时初始化的,所以在Ajax调用完成之前。
我很难理解应该放在哪里,放在哪个元素上
acf.do_action(\'append\', $(\'#popup-id\'));
最后,我对表单标记的类使用了do\\u操作,如下所示:
acf.do_action(\'append\', $(\'.acf-form\'));
这是我正在使用的代码片段:
jQuery(function($){
// Add HTML for custom spinner
var spinner = spinner_html();
$.ajax({
url : vmm_multistep_listing.ajaxurl,
beforeSend : function(){
// Add Spinner before response received
$(\'#multistep-listing\').html(spinner);
},
type : \'post\',
data : {
action : \'multistep_check\', // PHP function to call
nonce_ajax : vmm_multistep_listing.ajax_nonce // Nonce Validation
},
success : function(multistepForm) {
console.log(multistepForm);
// Output Response (ACF Form)
$(\'#multistep-listing\').html(multistepForm);
// This did the trick
acf.do_action(\'append\', $(\'.acf-form\'));
}
});
});
我还使用了acf\\u enqueue\\u uploader();在get\\u footer()上方的主php文件中;
如果有什么不清楚的地方,请告诉我。