0

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

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

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

我在 jsfiddle 上设置了这个:

http://jsfiddle.net/sanpopo/pjH5p/

<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');
        });
    };

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

在根据一些评论进行更多研究后,我在 SO 中找到了这篇文章: <select> 上的 jQuery 更改事件在 IE 中未触发 看起来更改事件在 IE 中与事件委托有问题。我为输入类型文件找到的所有其他解决方案都建议使用我想避免的浏览器检测。

4

1 回答 1

-1

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

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

element.attachEvent('onchange', methodGoesHere)

于 2013-05-23T17:33:43.037 回答