在AJAX弹出窗口中加载时,qq.FileUploader不起作用

时间:2012-01-06 13:36:19

标签: javascript jquery ajax file-upload

所以我得到了一个使用AJAX动态加载的对话框,在那个框中,我有一个用Valums qq.FileUploader替换的文件输入。我在加载内容后调用FileUploader上的init,我的输入框被FileUploader正确替换。

正如您在下图中所看到的,输入被所有内容取代,并且新的“隐藏”输入就在那里。问题是我无法点击它。但是,我可以正确拖放文件。因此,上传仍然有效,但只能拖放。这已经在Windows上使用Chrome和Firefox进行了测试。

Image of dialog with input replaced

请参阅Valums qq.FileUploader doesn't work when it's initialized after loading button by ajax

编辑:对话框代码不是jQuery UI,它是自定义代码,基本上,我在打开对话框时触发事件,并且我在此事件上绑定以执行FileUploader代码。

编辑2 :所以我尝试在弹出窗口后使用1s的超时来执行FileUploader代码,但仍然没有去。还尝试使用z-index,但没有去。

编辑3 :几周后它仍无法正常工作。我似乎无法找到这个问题的原因。这是两个图像,说明“隐藏”文件上传的位置(红色)。它在外面工作,但不在对话框内。

这是外部对话框,它可以正常工作:

This is outside a dialog, and works

这是SAME的确切形式,但内部对话框,但这不起作用:

Same exact form, inside a dialog, doesn't work

编辑4 :只需使用我的代码设置JSFiddle:http://jsfiddle.net/G5qP6/6/

然而,正如你所看到的,它在JSFiddle中运行得很好,这让我感到疑惑,为什么它在我的应用程序中不起作用。

1 个答案:

答案 0 :(得分:1)

根据我的理解 - 您无法点击上传按钮,但可以拖动。

如果是这种情况,这似乎是一个CSS问题。可能一个元素与您的上传按钮重叠,因此您实际上是在点击另一个元素。尝试通过设置边框和背景颜色进行调试。如果上传按钮重叠,您将看到哪个元素与其重叠。

我想到的另一件事就是改变你拨打Upload.initializeUploads();的地方 在你完成Dialog.init()后,我会把它放在$('body').append(this.element);

你的小提琴示例在我的Firefox 10,Chrome 16,IE 8和Opera 10(某些东西)上工作得很好。 我的建议也适用于相同的浏览器。

您的原始代码:http://tmp.itnews-bg.com/jValdron/
我改变了什么:http://tmp.itnews-bg.com/jValdron/index-2.html