Javascript 定制风格的Html5文件上传表单可以';使用ie10启动提交按钮

Javascript 定制风格的Html5文件上传表单可以';使用ie10启动提交按钮,javascript,file-upload,cross-browser,internet-explorer-10,Javascript,File Upload,Cross Browser,Internet Explorer 10,我想用下面的代码设置文件上载表单的样式: 请选择文件 浏览 $('input[name=upfile]')。更改(函数(){ $('#filepath').val($(this.val()); }); 它在Chorme/Firefox/Safari上运行得非常好,但IE 10在我单击提交按钮时,它只是不启动 有什么想法或解决办法吗?请与我分享!谢谢 在我的IE10上,它确实会提交,但只有在第二次单击提交按钮之后。如果您使用常规输入文件而不是触发事件的文本,它会工作(至少对我来说是这样),但我

我想用下面的代码设置文件上载表单的样式:


请选择文件
浏览
$('input[name=upfile]')。更改(函数(){
$('#filepath').val($(this.val());
});
它在Chorme/Firefox/Safari上运行得非常好,但IE 10在我单击提交按钮时,它只是不启动


有什么想法或解决办法吗?请与我分享!谢谢

在我的IE10上,它确实会提交,但只有在第二次单击提交按钮之后。如果您使用常规输入文件而不是触发事件的文本,它会工作(至少对我来说是这样),但我不知道您是否可以选择

更新:

经过一些研究,我找到了一个可能适合您的问题的解决方案:

<style>
  #fileinput { position: absolute; left: -9999em; }
  #link { color: #2a9dcf; font-size: 16px; }
  #link:hover { text-decoration: underline; cursor: pointer; }  
</style>

<form id="uploader-form" method='POST' enctype='multipart/form-data' action='file.php'> 
  <fieldset>
    <legend>Please choose file</legend>
    <div class="input-append">
      <input id="filepath" class="input-large" type="text">
      <input type="file" id="fileinput" />
      <label for="fileinput" id="link" class="trigger-file-input">Browse</label>
    </div>
    <div>
      <input id="submitBtn" class="btn btn-primary" type="submit" value="Upload">
    </div> 
  </fieldset> 
</form>

<script type="text/javascript">
// after the user selects the file they want to upload, submit the form
$('#fileinput').on("change", function() {
    $('#filepath').val($(this).val());
});


// mozilla won't focus a file input with the click of a corresponding
// label, but all other browsers do. if we detect mozilla, listen for
// the label click and send a click to the file input programmatically
if($.browser.mozilla) {
    $('.trigger-file-input').click(function() {
      $('#fileinput').click();                             
    });
}
</script> 

#fileinput{位置:绝对;左:-9999em;}
#链接{颜色:#2a9dcf;字体大小:16px;}
#链接:悬停{文本装饰:下划线;光标:指针;}
请选择文件
浏览
//用户选择要上载的文件后,提交表单
$('#fileinput')。在(“更改”,函数()上){
$('#filepath').val($(this.val());
});
//mozilla不会通过单击相应的
//标签,但所有其他浏览器都有。如果我们检测到mozilla,请监听
//标签单击并以编程方式发送对文件输入的单击
if($.browser.mozilla){
$('.trigger file input')。单击(函数(){
$('#fileinput')。单击();
});
}

请参阅:

您是否在javascript控制台中看到错误消息?很遗憾,我在控制台中没有看到任何消息。您确定在单击“提交”时没有发生任何事情吗?使用IE中的“网络”选项卡确定是否发送了请求。您必须单击按钮才能在该选项卡中启用请求/响应日志记录。我一时记不起这个按钮叫什么了。谢谢!我确定没有发送任何数据,我发现当我单击两次时,“提交”按钮可以启动,但没有文件数据。感谢您的测试。我刚刚发现了同样的结果!我试过你的建议,但还是不管用(我想知道为什么IE10在这种情况下需要双击才能提交。我在IE10上试用了它,效果很好…也许你可以添加标题来强制IE9进行渲染..但是如果你想提交文件,IE似乎不允许你用输入文件标签代替任何东西..所以如果外观对你来说不重要,这是100%的解决方案如果说Mozilla,你指的是Firefox,它似乎适合我。所以我不需要你代码的最后一部分。