![input标签file的value属性IE兼容性问题 input标签file的value属性IE兼容性问题](https://image.shishitao.com:8440/aHR0cHM6Ly9ia3FzaW1nLmlrYWZhbi5jb20vdXBsb2FkL2NoYXRncHQtcy5wbmc%2FIQ%3D%3D.png?!?w=700&webp=1)
在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删除了。