2009-11-18 49 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"));