这是我的代码:
$('#button').click(function () {
$('#file').click();
});
$('#file').change(function (){
$('#form').submit();
});
<form style="display:none;" id="form" method="post" target="upload_target" enctype="multipart/form-data" action="upload">
<input id="file" name="file" id="file" type="file" /><br />
<input type="submit" name="action" value="Upload Image" /><br />
<iframe id="upload_target" name="upload_target" src="" style="width:100;height:100;border:00;"></iframe>
</form>
<span id="button" class="button def">upload</span>
问题在哪里?
这适用于Firefox,Chrome但不适用于IE
答案 0 :(得分:3)
检查你的选择器,从第二部分中选择器中删除#,如下所示。
$('input[type=file]').change(function(){
$('#form').submit();
});
这应该完美无缺。
答案 1 :(得分:1)
$('input[type=file]')
只有当你想通过tagName进行选择时才应该是input
,如果要按ID选择元素,则应在选择器前使用#
修改强>
如果您检查了控制台,由于IE的安全规则,您将在IE SCRIPT5: Access is denied.
上看到此错误
您无法访问具有不同域名的网页中的Iframe。
经过一些搜索,我发现了一些可能对你有帮助的东西,你必须在父页面和它的iframe上将document.domain设置为相同的东西,以便它们相互通信。
document.domain = "yourdomain.com"
来源:http://www.tomhoppe.com/index.php/2008/03/cross-sub-domain-javascript-ajax-iframe-etc/
祝你好运。答案 2 :(得分:0)
Internet Explorer不允许上传通过Javascript触发的文件。你正在做什么,通过按钮触发文件浏览器的单击功能,然后尝试发送任何选择的文件在IE中不起作用。你会得到Access Denied错误。
这不是代码中的错误,只是对IE工作方式的限制。