2009-11-18 48 views
3

所以我有一个很奇怪的问题,我想看看是否有人对此有所了解。在jQuery UI对话框中无法使用文件上传

我有一个页面,其中显示已上传到我们的服务器的文件的网格。网格工具栏为他们提供了上传更多文件的能力。当他们点击工具栏上的“添加文件”按钮时,会出现一个jQuery UI对话框模式窗口,其中包含一个简单的文件上传控件。在他们选择一个文件后,他们点击对话框上的“上传”按钮,提交底层表单进行上传。还请注意,因为我使用的是asp.net,所以页面上只有一个表单,所以我没有提交错误的表单。

现在...当我试图在后端查找上传的文件时,没有文件上传。更糟糕的是,如果我将上传控件移出对话框div,并在没有对话框的情况下直接使用它,则上传工作正常。

这使我相信即使我定义的div将成为主窗体中的对话框,允许它使用回发进行提交,但jQuery会以某种方式移动它或将其从窗体中解除关联。

这可能吗?或者有什么我可能会失踪?我似乎无法找到任何说明的文件。提前致谢!

+0

你是如何加入与它上传输入'div'。你可能会把它放在.NET表单之外。尝试将输入放在页面上,然后执行'$('div.withUpload')。dialog();' – 2009-11-18 15:16:02

+0

事实并非如此,我的主页面包含主窗体,因此我的主内容占位符内的所有内容都在窗体内。 – jamesmillerio 2009-11-18 17:32:18

回答

2

你说得对。对话框将其内容移出其形式,并将其附加到主体。可能为了更好地控制DOM,确保它始终显示在中心,高于一切,并且不包含在某些绝对定位的DIV中......

0

这里发生的是Block Block UI删除其模式中的按钮上的所有点击功能。为了解决这个问题,我发现最好的解决方案是有一个隐藏的按钮,然后将执行所需的处理。

下面是一个例子:

HTML

<asp:Button runat="server" ID="btn_Upload" OnClientClick="UploadFiles(); return false;" /> 
<asp:Button runat="server" ID="btn_UploadClick" OnClick="btn_UploadFiles_Click" style="display:none;" /> 

使用Javascript/jQuery的

function UploadFiles() 
{ 
    $.unblockUI({ 
     onUnblock: function() { 
      $('[id$=btn_UploadClick]').click(); 
     } 
    }); 
} 
0

您需要的对话框移动到表格内。

var dialog = $("#dialog").dialog({ 
 
    autoOpen: false, 
 
    height: 300, 
 
    width: 350, 
 
    modal: true, 
 
    buttons: { 
 
    "Upload": function() { 
 
     __doPostBack('uploadfile', ''); 
 
     $(this).dialog("close"); 
 
    }, 
 
    Cancel: function() { 
 
     $(this).dialog("close"); 
 
    } 
 
    } 
 
}); 
 

 
dialog.parent().appendTo($("form:first"));