我们在实际应用中经常希望能把文件域给清空,比如使用change事件时,因为不清空再次选择同一文件时将不在触发change事件。
但是在IE中,由于安全设置的原因,是不允许更改文件域的值的,也就是不能使用val('')设置为空。
因此我们就只能换个思路,把这个input元素复制一个,然后将原来的删除。在IE下复制元素的时候,其中的值是不会被复制的,所以就达到了清空文件域的目的了。而在Firefox、Chrome下,其中的值也会被一同复制,但可以使用val('')来清空。
那么我们来简单些个插件吧:
$.fn.clearFileInput = function() {//清空file HTML控件的值
return this.each(function() {
if (/MSIE/.test(navigator.userAgent)) {
$(this).replaceWith($(this).clone(true));
} else {
$(this).val('');
}
});
};
以后就清空文件域就可以这样使用啦:
$("#myfilefield1,#myfilefield2").clearFileInput();