Javascript 使用jQuery提交简单表单-为什么在IE9中不起作用?

Javascript 使用jQuery提交简单表单-为什么在IE9中不起作用?,javascript,jquery,html,forms,Javascript,Jquery,Html,Forms,这是我的密码: <html> <head> <style type="text/css"> #myform {display:none;} </style> </head> <body> <button type="button" id="uploadbutton">Upload Images</button> <form name="myform" id="myform" method="P

这是我的密码:

<html>
<head>
<style type="text/css">
#myform {display:none;}
</style>
</head>

<body>
<button type="button" id="uploadbutton">Upload Images</button>
<form name="myform" id="myform" method="POST" action="http://www.########.com/post.php" enctype="multipart/form-data">
  <input type="file" name="imagefile" id="imagefile" accept="image/*" onchange="FileSelected();" />
</form>

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script type="text/javascript">
$('#uploadbutton').click(function() {
    $('#imagefile').trigger('click');
});

function FileSelected() {
 document.getElementById("myform").submit();
}
</script>
</body>
</html>
我试图让它在IE9和更老的浏览器中工作,但是jQuery提交函数没有启动。最终,我将构建一个脚本,该脚本在不刷新页面的情况下提交图像,表单将被隐藏。在现代浏览器上,一个复杂的FileSelected函数通过AJAX提交文件图像,尽管我需要帮助找到一个替代方法来在不支持这种AJAX/文件提交的旧浏览器上工作


让我们从简单的开始:为什么上面这个小脚本不能在IE9上工作?

据我所知,您将需要一个提交元素据我所知,您将需要一个提交元素这是因为您没有提交表单

而不是:

$('#imagefile').trigger('click');
您需要使用:

$('#myform').submit();
我的片段:

$function{ $'imagefile'。在'change'上,函数e{ 如果此值为.value!={ 警报“已加载”; //取消对测试的注释 //$'myform'。提交; } }; $“上载按钮”。单击函数{ $'imagefile'。触发“单击”; }; }; myform{ 显示:无; } 上传图像
这是因为您没有提交表单

而不是:

$('#imagefile').trigger('click');
您需要使用:

$('#myform').submit();
我的片段:

$function{ $'imagefile'。在'change'上,函数e{ 如果此值为.value!={ 警报“已加载”; //取消对测试的注释 //$'myform'。提交; } }; $“上载按钮”。单击函数{ $'imagefile'。触发“单击”; }; }; myform{ 显示:无; } 上传图像
FileSelected方法没有触发jQuery提交,而是在表单元素对象上触发

在IE9中,您可能需要使用引用document.forms集合

document.forms[0].submit()
// or simply use jquery
$("#myForm").submit();

FileSelected方法没有触发jQuery提交,而是在表单元素对象上触发

在IE9中,您可能需要使用引用document.forms集合

document.forms[0].submit()
// or simply use jquery
$("#myForm").submit();


您可能需要等待文档完全加载后才能添加jquery事件。在现有脚本代码周围尝试$function{…}。@Lee-我尝试了您的建议,但无效。您可能需要等到文档完全加载后才能添加jquery事件。在您现有的脚本代码周围尝试$function{…}。@Lee-我尝试了您的建议,但不起作用。这些建议是我想到的第一件事,但它们也不起作用。有什么错误吗?我打开了IE9开发工具,似乎没有任何错误。这些建议是我想到的第一件事,但它们也不起作用。是否有任何错误?我打开了IE9开发人员工具,似乎没有任何错误。不幸的是,我尝试了您的建议,并在选择文件之前提交了表单。我隐藏了丑陋的文件浏览按钮和$'imagefile'。触发'click';该行允许一个漂亮的上传图像按钮模拟单击隐藏文件浏览按钮。在我的产品脚本中,文件输入字段被css隐藏。在您有机会使用浏览器内置行为选择图像之前,您的方法将提交表单。我已更新了原始代码,以完全隐藏表单元素,就像在我的产品脚本中一样。@gaetanoM-不幸的是,这不起作用。我得到了加载的->提交弹出窗口,但当我取消注释$'myform'.submit;,表单本身不会提交;。我也没有在IE9开发工具中看到错误。出于某种原因,无论我做什么,我都无法通过jQuery让表单像这样提交。@gaetanoM-我解决了问题,显然上传需要一个-一些奇怪的IE类型的问题。一旦这样做了,一切都正常了。不幸的是,我尝试了你的建议,在选择文件之前提交了表单。我隐藏了丑陋的文件浏览按钮和$'imagefile'。触发'click';该行允许一个漂亮的上传图像按钮模拟单击隐藏文件浏览按钮。在我的产品脚本中,文件输入字段被css隐藏。在您有机会使用浏览器内置行为选择图像之前,您的方法将提交表单。我已更新了原始代码,以完全隐藏表单元素,就像在我的产品脚本中一样。@gaetanoM-不幸的是,这不起作用。我得到了加载的->提交弹出窗口,但当我取消注释$'myform'.submit;,表单本身不会提交;。我也没有在IE9开发工具中看到错误。出于某种原因,无论我做什么,我都无法通过jQuery让表单像这样提交。@gaetanoM-我解决了问题,显然上传需要一个-一些奇怪的IE类型的问题。一旦这样做了,一切都起作用了。