Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将更改事件绑定到输入类型文件,并在每次选择文件时激发该事件_Javascript_Jquery_File Upload_Internet Explorer 8 - Fatal编程技术网

Javascript 将更改事件绑定到输入类型文件,并在每次选择文件时激发该事件

Javascript 将更改事件绑定到输入类型文件,并在每次选择文件时激发该事件,javascript,jquery,file-upload,internet-explorer-8,Javascript,Jquery,File Upload,Internet Explorer 8,我有一个file类型的输入元素。我正在将更改事件绑定到document.com上的元素,以便在选择文件后执行功能。这在IE 9+和Chrome中非常有效 然而,我在IE8上也有用户。在IE 8中,事件第一次触发,然后在所有后续尝试选择文件时,事件不会触发。我试图清除文件名,但似乎没有帮助 希望我没有做浏览器检查,如果是IE 8,在每次选择文件后绑定事件 我在JSFIDLE上设置了以下内容: 任何输入建议都会有帮助。谢谢 在根据一些评论做了更多的研究之后,我发现这篇文章是这样的: 看起来更改事件在

我有一个file类型的输入元素。我正在将更改事件绑定到document.com上的元素,以便在选择文件后执行功能。这在IE 9+和Chrome中非常有效

然而,我在IE8上也有用户。在IE 8中,事件第一次触发,然后在所有后续尝试选择文件时,事件不会触发。我试图清除文件名,但似乎没有帮助

希望我没有做浏览器检查,如果是IE 8,在每次选择文件后绑定事件

我在JSFIDLE上设置了以下内容:

任何输入建议都会有帮助。谢谢

在根据一些评论做了更多的研究之后,我发现这篇文章是这样的: 看起来更改事件在IE中的事件委派方面存在问题。我为输入类型文件找到的所有其他解决方案都建议使用浏览器检测,这是我要避免的。

您必须在IE 8中使用element.attachEvent。事件名称也不同

要向IE 8中的元素添加更改事件,可以执行以下操作:


element.attachEvent'onchange',MethodGoesher

您是否尝试过不使用事件委派?您的示例代码中似乎不需要它。@KevinB在我的实际代码中是必需的。jQuery的live在1.7中被弃用,并从1.9中删除。不要使用它。学习使用ONI如果您在没有事件委派的情况下尝试了它,它是否解决了问题?我正在尝试确保您使用的jQuery版本在IE中没有出现冒泡更改事件的错误。@epascarello是的,先生!我知道这一点,并且尝试了.live,因为我在另一个SO问题中看到了它,应该将它改回来,我也尝试了.bind,这也不再推荐了。无论如何,感谢您的更正。我认为这与问题无关,他正在使用jQuery绑定事件,jQuery已经在内部处理了这个差异。
<input id="fileToUpload" type="file" name="fileToUpload" />

$(document).ready(function () {    
    addEventToBrowseFileBtn();
    alert('event was bound');
});


function addEventToBrowseFileBtn() {
        $('#fileToUpload').live('change', function () {
            if ($('#fileToUpload').val() == "") {
                return false;
            }
            alert('doing some code stuff');
        });
    };