iframe上传图片,点击主页面提交按钮后取不到file控件中的值

张孤山 2015-06-04 10:24:19
请教各位大神一个问题:
环境win8.1,IE11没有问题。
环境win7及以下,IE9及以下有问题。
调试工具VS2010。
如题,一张页面中放一个iframe,
       <iframe id="IProtrait" name="IProtrait" class="iframe" src="Protrait.aspx" scrolling="no"
frameborder="0" runat="server"></iframe>

其中有上传控件,
     <input id="fileProtrait" runat="server" type="file" style="display: none;" name="file"
onchange="fileProtraitShow(this)" />

上传按钮1(点击后在div中实现图片预览)。
  <input id="btnUpload" type="submit" value="上传" onclick="UploadProtrait();" class="bnt_SL_X" />

上传按钮2(隐藏,触发后台事件以上传图片).
  <input id="btnProtrait" runat="server" type="button" onserverclick="btnProtrait_Click"
style="display: none;" />

.我的问题是,在主页面点击提交按钮后,
    window.frames["IProtrait"].onserverProtrait();

去iframe中找到并触发了上传按钮2的事件,
//上传图片
        function onserverProtrait() {
var no = $(window.parent.document).find("#txtNO").val();
$("#hidNO").val(no);
$("#btnProtrait").click();
}

但fileProtrait.PostedFile.FileName.Length却始终显示为0,也就是上传控件的值为空。
  if (fileProtrait.PostedFile.FileName.Length > 0)

但是,在点击上传按钮实现预览的时候,我取的就是上传控件的值,这里是能取到的。
//显示头像
        function fileProtraitShow(imgFile) {
//document.getElementById("imgProtrait").src = "";
$("#imgProtrait").hide();
if (imgFile.value) {
document.getElementById("divProtraitShow").filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgFile.value;
var pos = imgFile.value.lastIndexOf("\\");
$("#hidfileName").val(imgFile.value.substring(pos + 1));
$("#divProtraitShow").show();
$("#imageProtrait").hide();
}
}

难道鼠标离开了iframe后,或者从父页面触发子页面事件会清空子页面上传控件的值?
...全文
216 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
张孤山 2015-06-04
  • 打赏
  • 举报
回复
引用 1 楼 andywangguanxi 的回复:
为什么不把提交按钮放在iframe的子页里面?你这样涉及到iframe子父页面的通信了
图片的上传按钮是在iframe里面的 但整个页面的提交按钮不可能放在iframe里面啊 父页面上还有N个控件,这个图片上传只是其中一小块而已。
EdsionWang 2015-06-04
  • 打赏
  • 举报
回复
为什么不把提交按钮放在iframe的子页里面?你这样涉及到iframe子父页面的通信了

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧