input标签file的value属性IE兼容性问题

在IE中input标签file的value属性是只读的,不能通过js来改变,如下代码在IE中就是无效的:

var input = document.getElementById('file');
input.value = '';

所以当在file中上传了同一张图片时,是不会触发file的change事件的。
但在其他浏览器里就可以轻易的使用js改变value值,使上传同一图片时触发change事件。
为了解决这个问题就要在每次图片上传完成后删除掉这个input再重新生成一个input插入到DOM中,大概的代码如下:

resetFile = function(ele, form, name, str){
    var parent = ele.parentNode;
    var input = $C('input');
    input.type = 'file';
    input.className = 'file';
    input.name = str;
    input.id = str;
    parent.removeChild(ele);
    parent.appendChild(input);
    nodes[name] = input;
    Core.Events.addEvent(nodes[name],function(){
        var imgvalue = ele.value;
        if(imgvalue != ''){
            form.submit();
        }                
    },'change');
};

(此代码引用于blog7icp的blog7icp/jobs/bankcardbind.js)
注意:在生成新的input之后要重新绑定change事件,之前绑定的change事件已经跟随着被删除的input删除了。

转载于:https://www.cnblogs.com/yangzhihang627/p/5826608.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值