IE使用.change()表单提交()

时间:2013-01-04 12:15:01

标签: javascript jquery html

这是我的代码:

$('#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

3 个答案:

答案 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工作方式的限制。