【问题标题】:Reload (or reinitialise) Uploadify in jQuery UI modal dialog box在 jQuery UI 模式对话框中重新加载(或重新初始化)Uploadify
【发布时间】:2011-02-18 15:11:51
【问题描述】:

我在 jQuery UI 模式对话框中使用 Uploadify,并且我正在使用 Ajax 提交数据。然后我可以重用模式对话框来上传更多文件。我现在几乎可以正常工作了,但这是我的问题。

当模态框第二次打开时,我使用 Uploadify 添加了一个文件,它在队列中出现了两次。如果我第三次打开模态框并添加一个文件,它将在队列中出现 3 次(依此类推)。

当我关闭模态对话框窗体时,我使用以下代码(从 jQuery UI 模态对话框的 Close 函数调用):

function DestroyUploadifyInstance(){
$('#image_nameQueue').remove();
$('#image_nameUploader').remove();
}

当我打开模态对话框时,我再次调用uploadify代码(这是从jQuery UI模态对话框的Open函数中调用的):

function CreateUploadifyInstance(){
$('#image_name').uploadify({
'uploader' : 'uploadify.swf',
'script' : 'uploadify.php',
'cancelImg' : 'cancel.png',
etc

我觉得我快到了,因为即使显示了重复的文件,代码实际上也可以工作(它不会多次上传每个文件,只是一次)。

如何停止显示重复的队列项目? 谢谢。

【问题讨论】:

  • 如果不看更多代码就很难排除故障。但我认为问题是由于uploadify插件仍在初始化而引起的。似乎您可以将代码从对话框创建中移出初始化,然后将其添加到其他地方。
  • 谢谢,我认为这行不通,因为 image_name 是对话框表单的一部分。

标签: jquery-ui uploadify


【解决方案1】:

Uploadify 将事件 uploadifySelect 的处理程序绑定到您调用它的元素,这会添加队列项。如果您没有在 DestroyUploadifyInstance 中取消绑定,则事件处理程序链将随着每次调用 CreateUploadifyInstance 而增长,这就是导致重复的原因。

function DestroyUploadifyInstance()
{
    $("#image_name").unbind("uploadifySelect");
    $('#image_nameQueue').remove();
    swfobject.removeSWF('image_nameUploader');
}

这种销毁/重新初始化业务似乎只在 IE 中是必需的,因为它在隐藏 Flash 对象时处理这些对象的方式,所以我会使其依赖于浏览器并坚持对 FF、Chrome 等进行上传的单个调用.,不会在每次关闭对话框时“破坏”。

【讨论】:

    【解决方案2】:

    你可以使用uploadifySettings()

    var news_id = $(this).attr('news_id');
    $("#image_name").uploadifySettings('script', 'http://example.com/upload.php?news=' + news_id);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多