因此,我得到一个使用AJAX动态加载的对话框,在该对话框中,我有一个用Valums qq.FileUploader替换的文件输入。加载内容后,我确实在FileUploader上调用了init,我的输入框被FileUploader正确替换了。
如下图所示,输入已被所有内容替换,并且新的“隐藏”输入在那里。问题是我无法单击它。但是,我可以正确地拖放文件。因此,上传仍然有效,但只能拖放。已在Windows上的Chrome和Firefox上对此进行了测试。
参见Valums qq.FileUploader doesn't work when it's initialized after loading button by ajax
编辑:对话框代码不是jQuery UI,它是自定义代码,基本上,我在打开对话框时触发一个事件,并绑定(bind)到该事件上以执行FileUploader代码。
编辑2 :所以我尝试在弹出窗口后使用1秒的超时时间来执行FileUploader代码,但还是失败了。还尝试使用z-indexes,但没有成功。
编辑3 :几周后,它仍然无法正常工作。我似乎无法找到造成此问题的原因。这是两个图像,它们说明“隐藏”文件上传的位置(红色)。而且它可以在外部运行,但不能在对话框内部运行。
这是对话框之外的,它可以正常工作:
这是完全相同的形式,但是在对话框中是,但这不起作用:
编辑4 :只需使用我的代码设置一个JSFiddle:http://jsfiddle.net/G5qP6/6/
但是,如您所见,它在JSFiddle中可以正常工作,这让我感到奇怪,为什么它在我的应用程序中不起作用。
最佳答案
据我了解-您无法单击“上传”按钮,但可以拖放。
如果真是这样,这似乎是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