我拥有的是隐藏文件输入和文本输入。我想要的是单击并聚焦文本输入,然后选择要上传的文件并在文本输入中包含所选文件的文件名。该文件仍将在文件输入中被选中,以便该文件可以与表单一起提交。
我现在拥有的脚本在 Chrome 和 Firefox 中运行良好,但在 IE 中却不行(当然)。当文本输入具有焦点并单击它时,会发生什么情况,文件选择窗口会打开两次。实际上,当您关闭第一个时,第二个会打开。
这是我现在拥有的脚本:
$(function() {
$('input[type=text]').focus(function() {
$('input[type=file]').click();
});
$('input[type=text]').click(function() {
var $this = $(this);
if ($this.is(':focus')) {
$this.focus();
}
});
$('input[type=file]').change(function() {
var $this = $(this);
var filename = $this.val().replace(/\\/g, '/').split('/');
$('input[type=text]').val(filename[filename.length - 1]);
});
});
我尝试检查 IE 并$this.focus()
在单击时不调用,但不幸的是没有成功。相反,根本没有调用选择窗口。
我在这里设置了一个 JSFiddle:http: //jsfiddle.net/Phally/g2vkb/
要重现它,您必须在 Internet Explorer 中打开 Fiddle(我尝试在 IE10 和 IE10 中伪装成 IE9)。单击文本输入并取消。现在文本输入具有焦点。然后再次单击它。它将打开选择窗口。通过选择文件或取消来关闭它。现在将出现第二个窗口。
所以问题是,如果有人知道如何阻止 IE 打开两个文件选择窗口。提前致谢。