输入提交没有在Internet Explorer中使用jquery提交表单

时间:2014-04-28 08:32:36

标签: javascript php jquery forms internet-explorer

我创建了一个HTML和jQuery代码来提交带有jQuery的表单,它可以在除Internet Explorer之外的所有浏览器中使用。

HTML:

<form name="file_upload" id="file_upload" action="<?php echo base_url(); ?>projects/file" enctype="multipart/form-data" method="POST">
    <a class="button" onclick="document.getElementById('file-upload-input').click(); return false;"><span class="plus"></span>Upload File</a> 
    <input id="file-upload-input" name="upload" type="file" style="display:none;">
    <input id="submit-button" name="submit" type="submit" value="Upload" style="display:none;">
</form> 

的jQuery

$(document)
.on('change', '#file-upload-input', function(){
    $('#submit-button').click();
})

编辑:我也试过了:

$(document)
.on('change', '#file-upload-input', function(){
    $("#file_upload").submit();
})

但输入提交仅在Internet Explorer中提交表单。

4 个答案:

答案 0 :(得分:1)

试试这个。

$(document)
.on('change', '#file-upload-input', function(){
    $("#file_upload").submit();
})

答案 1 :(得分:1)

更改:

$('#submit-button').click();

为:

$('#file_upload').submit();

应该这样做。

答案 2 :(得分:1)

在IE中使用委托事件方法和“更改”事件时可能会遇到问题(因为它不支持冒充哪些事件委托依赖)。

尝试将onchange处理程序直接绑定到文件输入:

$('#file-upload-input').on('change', function(){
    $("#file_upload").submit();
})

答案 3 :(得分:1)

我认为这是事件传递限制了javascript触发的一些操作。 因此,您应该始终使用浏览器触发的原始​​事件。在您的情况下,我们可以使用css将文件上传输入设置为透明并将其覆盖到“a”按钮:

<input id="file-upload-input" name="upload" type="file" style="
width: 88px;
position: absolute;
left: 0;
opacity: 0;
filter:alpha(opacity=0)
">

如果这样做,您可以删除绑定到“a”节点<​​/ p>的onclick事件