我所拥有的是隐藏文件输入和文本输入。我想要的是单击并聚焦文本输入,然后选择要上载的文件并在文本输入中包含所选文件的文件名。该文件仍将在文件输入中选择,以便可以使用表单提交文件。
我现在在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中打开小提琴(我尝试在IE10和IE10中冒充IE9)。单击文本输入并取消。现在文本输入具有焦点。然后再次单击它。它将打开选择窗口。通过选择文件或取消来关闭它。现在将出现第二个窗口。
所以问题是如果有人知道如何阻止IE打开两个文件选择窗口。提前谢谢。