javascript - 无法从 iframe 中找到 FileHiddenName

标签 javascript jquery asp.net iframe

我正在使用 iframe 上传图片。所以我有两个文件 - iframe 文件和将显示图像的文件。单击显示 iframe 的链接时,将运行此代码:

function ShowUploadImageOut(RecordID) {
    $('#<%=hfPieceID.ClientID %>').val(RecordID);
    $("#dvAddImageOutturn").html(
        '<iframe id="iframeUpload" src="utilities/UploadPOD.aspx?id=uploadOutturn"></iframe>'
    );
}

在 iframe 上是一个上传按钮,可以将图片保存到计算机上的文件夹中,并将图片文件名设置为 FileNameHidden

protected void btnUpload_Click(object sender, EventArgs e)
{
    if (fuUpload.HasFile)
    {
        if (Request.QueryString["id"] == "uploadOutturn")
        {
            String Path = ConfigurationManager.AppSettings["PieceOutturnFolder"].ToString()
                + Company.Current.CompCode;
            string FileName = fuUpload.FileName;

            if (File.Exists(Path + "/" + FileName))
            {
                File.Delete(Path + "/" + FileName);
            }

            fuUpload.SaveAs(Path + "/" + FileName);
            filename = FileName;
            imgTemp.ImageUrl = "/thumbnail.ashx?ImgFilePath=" + Path.Replace("/", "\\")
                + "\\" + FileName + @"&width=200&height=400";
            FileNameHidden.Value = FileName;
        }
    }
}

FileNameHidden 将属性 clientidmode 设置为 "static":

<input type="hidden" id="FileNameHidden" runat="server" clientidmode="Static" />

在显示图像的页面上有一个保存按钮。此按钮从 FileNameHidden 获取值并将其设置为隐藏字段。这个新的隐藏字段用于将文件名保存到数据库中:

<asp:HiddenField ID="hfUploadedPieceHubImageFile" runat="server" />

<div id="dvAddEditImageOutturn" class="dvdraggable">   
    <div id="dvAddImageOutturn"></div>

    <asp:LinkButton ID="btnPieceHubUpdateImage"
        onclick="btnUpdatePieceImage_Click"
        OnClientClick="CloseUploadWindow();return GetPieceOutturnFilename();"
        CssClass="btnSaveSmall"
        runat="server"
    ></asp:LinkButton>
</div>

function GetPieceOutturnFilename() {
    if ($('#iframeUpload').contents().find('#FileNameHidden').length > 0) {
        $("#<%= hfUploadedPieceHubImageFile.ClientID %>").val(
            $('#iframeUpload').contents().find('#FileNameHidden').val()
        );
    }
    return true;
}

问题出在 GetPieceOutturnfile 函数中。 $('#iframeUpload').contents().find('#FileNameHidden').length 始终为零。它应该从 iframe 中找到 FileNameHidden

通过代码我可以看到 FileNameHidden 肯定设置了图像的名称:

<input name="FileNameHidden" type="hidden" id="FileNameHidden" value="test.jpg">

所以我不明白为什么它说长度为零

最佳答案

问题出在 onClientClickbtnPieceHubUpdateImage 上:

OnClientClick="CloseUploadWindow();
return GetPieceOutturnFilename();"

它先关闭窗口,然后尝试从 Iframe 保存 FileNameHidden。交换它们以便调用 GetPieceOutturnFileName 首先解决了问题。

关于javascript - 无法从 iframe 中找到 FileHiddenName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34159319/

相关文章:

仅用于数字和英文键盘的 javascript 输入掩码

c# - 用逗号 MVC 5 格式化十进制值

来自查询字符串的 javascript/jquery 数组

java - 读取一个jsp传递给另一个jsp的参数

javascript - jqGrid 滚动错误与大行

c# - asp :ObjectDataSource?中的TypeName ="API.MyClass+Clients"和TypeName ="API.MyClass.Clients"有什么区别

c# - ASP.Net 注册表中的 MS Captcha 超时持续时间

javascript - res.redirect 来自 AJAX 调用

javascript - CommonJs模块系统中 "module.exports"和 "exports"之间的区别

javascript - Blaze 模板与 jQuery.sortable 冲突