当使用jQuery从外部调用时,文件上载窗口在IE中打开两次

时间:2013-08-10 13:09:49

标签: jquery internet-explorer file-upload window

我所拥有的是隐藏文件输入和文本输入。我想要的是单击并聚焦文本输入,然后选择要上载的文件并在文本输入中包含所选文件的文件名。该文件仍将在文件输入中选择,以便可以使用表单提交文件。

我现在在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打开两个文件选择窗口。提前谢谢。

0 个答案:

没有答案