Javascript 使用输入类型文件提交Ajax表单
我正在使用ajax提交一个表单,该表单可以浏览、上传并使用PHP处理文件。我讨厌标准的html输入类型=“文件”按钮(和大多数人一样),所以我使用了一个技巧,从另一个按钮(id=“fileSelect”)中单击标准的“浏览”按钮,我最终可以自定义该按钮。在safari和其他应用程序中效果很好,但在IE中提交表单的ajax代码行不会触发。ajax代码的其他元素也会被执行(最后我得到了警报(“ajax complete”);但是“$(“#imageform”).ajaxForm({target:'#preview'}).submit();”行在IE中不起作用 Ajax代码:Javascript 使用输入类型文件提交Ajax表单,javascript,jquery,ajax,file-upload,upload,Javascript,Jquery,Ajax,File Upload,Upload,我正在使用ajax提交一个表单,该表单可以浏览、上传并使用PHP处理文件。我讨厌标准的html输入类型=“文件”按钮(和大多数人一样),所以我使用了一个技巧,从另一个按钮(id=“fileSelect”)中单击标准的“浏览”按钮,我最终可以自定义该按钮。在safari和其他应用程序中效果很好,但在IE中提交表单的ajax代码行不会触发。ajax代码的其他元素也会被执行(最后我得到了警报(“ajax complete”);但是“$(“#imageform”).ajaxForm({target:'#
$(document).ready(function()
{
$('#xfile').live('change', function() // when there is an even on the 'file' element (like file selected)
{
$("#preview").html(''); // clears the preview area
$("#preview").html('<img src="general_images/loading.gif" alt="Uploading...."/>'); // displays the loading
$("#imageform").ajaxForm({target: '#preview'}).submit();
alert ("Ajax complete");
});
});
$(文档).ready(函数()
{
$('#xfile').live('change',function()//当'file'元素上存在偶数时(如所选文件)
{
$(“#预览”).html(“”);//清除预览区域
$(“#预览”).html(“”);//显示加载
$(“#imageform”).ajaxForm({target:'#preview'}).submit();
警报(“Ajax完成”);
});
});
和HTML代码:
<div>
<button id="fileSelect" onclick="document.getElementById('xfile').click();">Insert Picture</button>
<form style="display: inline" id="imageform" name="imageform" action="upload_file_journal.php" method="post" target="_blank" enctype="multipart/form-data">
<input style="visibility: hidden" type='file' name='xfile' id='xfile' /
</form>
插入图片
这在IE9及以上版本中不起作用(我认为它在IE10,11中起作用)
唯一的实际选择是使用绝对位置将上载控件放置在按钮顶部,然后将不透明度设置为0.1,然后它们看起来像是在单击按钮,但实际上是在单击输入,您必须对文件输入进行超级调整,以确保它们始终单击按钮部分
即使这样做也很麻烦。
希望这能有所帮助因此,如果javascript是由本机输入type=“file”按钮触发的,那么javascript可以正常工作,但如果按钮是由fileSelect按钮触发的,则不能正常工作。我用IE10试过了,但没用。我很好奇为什么它不会在jquery代码中触发submit。也许这只是一个很深的IE实现问题,我不应该真正关心。。。只要强迫IE用户使用本机按钮。是的,从我所读到的来看,这是为了安全。根据我自己的经验,您可以使用jquery和一个辅助按钮打开文件输入,但输入将无法按预期工作。数据永远不会进入服务器,看看这篇文章,它似乎显示了我所描述的修复,