0

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

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

4

0 回答 0