Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript FineUploader完成回调事件多次激发_Javascript_Jquery_Fine Uploader - Fatal编程技术网

Javascript FineUploader完成回调事件多次激发

Javascript FineUploader完成回调事件多次激发,javascript,jquery,fine-uploader,Javascript,Jquery,Fine Uploader,我在UI模式下使用Fine Uploader作为jQuery插件,我有一个文件类型的下拉列表,如图像、视频、pdf等。当下拉列表更改时,我会动态更改允许的扩展名和接受文件,方法是删除Fine Uploader生成的div,然后像这样重新创建它: $('.qq-uploader').remove(); $('#jquery-wrapped-fine-uploader').fineUploader({/* options go here... */}); 动态验证通过这种方式工作得很好,但是我在完

我在UI模式下使用Fine Uploader作为jQuery插件,我有一个文件类型的下拉列表,如图像、视频、pdf等。当下拉列表更改时,我会动态更改允许的扩展名和接受文件,方法是删除Fine Uploader生成的div,然后像这样重新创建它:

$('.qq-uploader').remove();
$('#jquery-wrapped-fine-uploader').fineUploader({/* options go here... */});
动态验证通过这种方式工作得很好,但是我在完整的回调事件中做了一些自定义的事情,比如显示缩略图。上载文件时,每次在第一次上载之前更改下拉列表时,它都会触发完整事件

目前我的解决方法是将上传的文件名存储在数组中,如果自定义完整逻辑已经存在于数组中,则跳过它


我不明白为什么整个回调事件会触发多次,因为我只上传了一个文件。是否有对此的解释和/或防止重复回调触发的方法?

这里有几种方法可以实现您的目标:

在重新初始化Fine Uploader之前,从DOM中删除Fine Uploader容器元素。在您的小提琴中,您正在移除Fine Uploader使用的一个内部元素。这是行不通的。您需要销毁实例,在使用jQuery插件时,唯一的方法是销毁包含插件实例的DOM元素。移除容器元素后,可以重新添加它并重新初始化Fine Uploader

利用这个机会。基本上,您将为每种文件类型创建一个具有适当验证设置的备用上载按钮,并更改用户更改文件值时显示的按钮


这里有几种方法可以实现您的目标:

在重新初始化Fine Uploader之前,从DOM中删除Fine Uploader容器元素。在您的小提琴中,您正在移除Fine Uploader使用的一个内部元素。这是行不通的。您需要销毁实例,在使用jQuery插件时,唯一的方法是销毁包含插件实例的DOM元素。移除容器元素后,可以重新添加它并重新初始化Fine Uploader

利用这个机会。基本上,您将为每种文件类型创建一个具有适当验证设置的备用上载按钮,并更改用户更改文件值时显示的按钮


我在Ray Nicholus的答案上再加一行。 $'jquery-wrapped-fine-uploader'。关闭
您还可以选择删除附加到$'jquery-wrapped-fine-uploader'的事件处理程序。

我在Ray Nicholus的回答中再添加一行。 $'jquery-wrapped-fine-uploader'。关闭
您还可以选择删除附加到$'jquery-wrapped-fine-uploader'的事件处理程序。

您使用的是什么版本?我可以向您保证,至少在当前版本中,每个完成的文件只调用onComplete一次。如果您使用的是当前版本,那么问题就在您的代码中,因此您需要发布所有客户端代码以供检查。我使用的是版本3.6.3,下面是我在JSFIDLE上设置的一个示例:更改下拉列表几次,然后上载一个文件以查看问题。该版本已经存在7个多月了。我建议您升级,看看问题是否仍然存在。我升级到4.1.1,但问题仍然存在。下面是一个更新的JSFIDLE:将下拉列表更改几次,然后上载一个文件。完整的警报将触发多次。我是最新版本的新手,有没有更好的方法动态更改allowedExtensions和AcceptFile?您使用的是什么版本?我可以向您保证,至少在当前版本中,每个完成的文件只调用onComplete一次。如果您使用的是当前版本,那么问题就在您的代码中,因此您需要发布所有客户端代码以供检查。我使用的是版本3.6.3,下面是我在JSFIDLE上设置的一个示例:更改下拉列表几次,然后上载一个文件以查看问题。该版本已经存在7个多月了。我建议您升级,看看问题是否仍然存在。我升级到4.1.1,但问题仍然存在。下面是一个更新的JSFIDLE:将下拉列表更改几次,然后上载一个文件。完整的警报将触发多次。我是最新版本的新手,有没有更好的方法来动态更改allowedExtensions和AcceptFile?我选择了第一个选项。谢谢你的帮助,雷·尼古拉斯!我同意第一种选择。谢谢你的帮助,雷·尼古拉斯!