IE 下 input 不响应 change 事件的处理

很多时候,我们都需要通过 input 来上传文件,通过 change 事件获取用户上传的文件,然后做一些额外的处理,最后上传到服务器。

可是事情往往就是没有那么美好。是的,IE 下 input 在选择文件后不触发 change 事件。

那怎么办呢?

其实解决办法也很简单,利用 IE 的一个特点就可以:IE 在对话框关闭前都会挂起 timeout。

所以我们绑定 input 的 click 事件,然后开启一个定时器去获取文件就可以了。就像这样:

if ($.browser.msie)
{
     $('#fileInput').click(function(event)
    {
        setTimeout(function()
        {
            if( $('#fileInput').val().length > 0) {
              doSomething()
            }
        }, 0);
    });
}
else
{
     $('#fileInput').change(doSomething);
}
posted @ 2015-01-11 15:52  山坡上的人们  阅读(1116)  评论(1编辑  收藏  举报