代码之家  ›  专栏  ›  技术社区  ›  jamesmillerio

文件上载在jQuery UI对话框中不起作用

  •  4
  • jamesmillerio  · 技术社区  · 16 年前

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

    这让我相信,即使我正在定义div,它将成为我在主表单中的对话框,允许它通过回发提交,jQuery还是在某种程度上移动它或将它与表单解除关联。

    3 回复  |  直到 16 年前
        1
  •  2
  •   David Hedlund    16 年前

    你说得对。对话框将其内容移到其窗体之外,并将其附加到正文中。可能是为了更好地控制DOM,确保它始终显示在中心,高于其他所有内容,并且不包含在某些绝对定位的DIV中。。。

        2
  •  3
  •   gjfonte    10 年前

    您需要将对话框移动到窗体内部。

    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"));
        3
  •  0
  •   Josh Mein    16 年前

    这里发生的是,块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();
            }
         });
    }