2012-06-06 135 views
3

此论坛已经涵盖此主题,但我还没有找到一个工作的IE解决方案呢(测试7,8 & 9)。在其他浏览器中正常工作。我希望有人有一个解决方案。 在此先感谢!jQuery表单自动提交文件输入更改在IE中

这是怎么:

我想摆脱标准的文件输入元素的,所以我说的图像。 点击它显示浏览窗口。当选择一个文件时,表单被提交。 由于浏览器的安全性,我暂时显示文件输入元素,焦点并隐藏它。

的问题: “访问被拒绝”

IE显示jquery.1.7.2.js行3241,字符6。 没有显示/隐藏技巧,问题仍然存在。 当我点击浏览按钮并选择一个文件时,表单会被提交。 这个问题似乎是该文件的浏览行为被另一个元素触发:

全码:

$('#fakeupload').click(function(){ 
     $('#form').show(); 
     $('#realupload').focus().trigger('click'); 
     $('#form').hide();   
    }); 

    $('#realupload').change(function(){ 
     $('#form').show(); 
     $('#form').submit(); 
     $('#form').hide();   
    }); 
+0

你肯定非常接近解决这个问题,我已经看到了它拿出往往只用“这是不可能的“解决方案:你是否准确地指出了你的代码中哪一行导致了”访问被拒绝“? –

+0

@KevinB错误是由$('#form')。submit()引起的;当我仅使用2nd代码的一部分(realupload).change。 – Robert

+0

你有一些特殊的表单处理程序,或者是提交给隐藏的iframe,或者是提交到同一页面等 –

回答

0

这仍然是一个无法解决的问题。为了使其工作,浏览按钮必须由用户点击。这里的技巧是修改浏览按钮,使其适合图像。

+0

我只是想添加到这个答案,您可以使用CSS设置浏览按钮的不透明度,以便用户在他们认为他们点击其他内容时实际单击浏览按钮。 Etc. filter:progid:DXImageTransform.Microsoft。α(不透明度= 0); \t \t \t filter:alpha(opacity = 0); \t \t \t \t \t \t \t \t \t \t \t -MS-滤波器: “的progid:DXImageTransform.Microsoft.Alpha(不透明度= 0)”; \t \t \t \t \t \t \t \t \t \t \t不透明度:0; – MartinF

0

你尝试为您的文件分配权限通过浏览器访问? 您是否清除了缓存? 尝试设置到期日期吗? 尝试用css替换show()/ hide()(“display”,“block”)/ css(“display”,“none”)

+1

感谢您的努力,但我真的不认为您会走向正确的方向。 – Robert

1

由于微软一群没有那么聪明的人做出了决定,因此Internet Explorer 8阻止了“拒绝访问”。

如果您尝试在输入类型文件中触发点击方法,则以后您在提交时会遇到问题。

这是唯一能做这种事情的浏览器。

再次感谢微软,您的浏览器是一个“作品的”> :(

+0

这是一件安全的事情,我完全可以理解为什么不允许伪造点击。我不满意,但我可以联系。而IE并不是唯一一个,Chrome也有相同的“问题”。 – Robert