html file控件的onchange事件,在选中同一个文件时是不会触发的。要想file选中同一个文件onchange事件也触发,可以创建一个新file对象,透明浮动覆盖在显示的file对象上,这样操作的就是新file对象,即使选中同一个文件也会触发onchange事件了。
注意:提交表单时需要移除那个透明的同名file对象,要不服务器端使用name来获取控件会出错。
file对象选中同一个文件如何触发change事件源代码如下
div.file{display:inline-block;position:relative;}
div.file input.transparent{position:absolute;left:0;top:0;filter:alpha(opacity=0);opacity:0;width:100%}
function changeEvent(o) {
alert(o.value);
var newfile = document.createElement('input');
newfile.onchange = function () { changeEvent(this) }
newfile.type = 'file';
newfile.className = 'transparent';
o.parentNode.appendChild(newfile);//添加新透明file对象
if (o.previousSibling) {//操作的是透明file对象
o.parentNode.removeChild(o.previousSibling);//删除显示的file对象
o.className = '';//透明对象显示出来
}
}
加支付宝好友偷能量挖...
2016-1-6Web开发网