2013-04-20 71 views
0

addEventListener改变事件对于输入文件中选择在IE 9和10中的文件选择后应触发,但它在第二时间为文件选择之后触发,这意味着在第一次如果没有文件被选择,则对于第一选择它不会触发和后,对于每一个文件选择收听事件触发器(如果不同的文件被选中)。我的代码片段:听在Internet Explorer

HTML

<input type="file" name="imagefile" id="upload"> 

的JavaScript

var file = document.getElementById("upload"); 
file.addEventListener("change", handlefileselect, false); 

function handlefileselect(event) { 
    alert("file selected"); 
} 

的代码运行正常在Firefox和Chrome,但与IE浏览器有问题。

回答

3

旧版本的IE不支持.addEventListener()方法,它有一个.attachEvent()方法,而不是事件添加到元素。

使用以下addEvent method

function addEvent(evnt, elem, func) { 
    if (elem.addEventListener) // W3C DOM 
     elem.addEventListener(evnt,func,false); 
    else if (elem.attachEvent) { // IE DOM 
     elem.attachEvent("on"+evnt, func); 
    } 
    else { // No much to do 
     elem[evnt] = func; 
    } 
} 

var file = document.getElementById("upload"); 
addEvent('change', file, handlefileselect) 
+0

得到it.Thanks这个标签解决..但为什么IAM得到这么晚回复 – PRASANTH 2013-04-20 05:37:25

+0

@PRASANTH迟到回复? – 2013-04-20 05:38:21

+0

手段第一个文件选择更改事件功能不会执行,但之后,对于每一个文件选择的事件触发的原因是什么。这是发生对我来说既IE 9和10 – PRASANTH 2013-04-20 05:41:25

1

您应该使用的attachEvent功能IE。

file.addEventListener ? file.addEventListener("change", handlefileselect, false) : file.attachEvent("onchange", handlefileselect); 
1

尝试使用这个,我没有检查,但大多数的IE问题,用在标题部分

<meta http-equiv="X-UA-Compatible" content="IE=edge"> 
+0

当然,我没有意识到这一点。谢谢 .. – PRASANTH 2013-04-20 05:38:25