我有一个包含大约30个表单的页面,用于客户端管理,但只有当用户单击以打开特定表单时才会调用表单。部分输出是jQuery.getScript()
函数,用于加载该特定表单的源文件。保存或取消表单后,表单会向上滑动并从页面中删除。
在单页加载时多次打开同一表单时遇到问题。每次通过ajax调用表单时,js源文件都被添加到dom中,因此,在后续保存事件中,保存函数被执行多次,每次将js源文件加载到dom中一次。
我找到了一个解决方案,并检查以确保在发布此问题之前鼓励他们分享问题/答案。 Seems it is.我的答案中的解决方案。
答案 0 :(得分:0)
这是我提出的解决方案,但也许某人有更好的东西。为了社区而共享:
我在dom ready之外的最顶层js文件中声明了一个全局变量,如下所示:
LoadedScripts = [];
然后在我的php函数中调用脚本,我把它作为条件,就像这样:
public static function load($path, $echo = false)
{
$js = '<script>';
$js .= 'if(LoadedScripts.indexOf("'.$path.'") == -1) { ';
$js .= 'jQuery.getScript("'.plugin_url_constant.'/lib/js/'.$path.'"); ';
$js .= 'LoadedScripts.push("'.$path.'"); ';
$js .= '}';
$js .= '</script>';
if($echo) echo $js;
else return $js;
}
然后在我的ajax请求中,我将它包含在返回的表单的顶部:
$output = my_prints_class::load('forms/clients/'.$this->form.'.js');
$output .= $this->displayform();
显然,如果您通过ajax获取此脚本标记,则不希望一般回显它,但我为非Ajax目的添加了该函数的选项。