在项目中使用的是bootstrap-fileinput,如下图:
下方是选择文件并上传,上方放文件的展示。上传之后要清空下方的文件框并设置可用,代码如下:
//清空上传文件框并设置可用
$("#file-case").fileinput('refresh').fileinput('enable');
但是在IE下,上传成功之后同样的设置代码,展示出来的页面效果却不对:
下方的文件框并没有显示全。检查之后发现正常的文件框的div应该是这样的:
但是错误展示的是这样的:
也就是说在IE下文件框的内容并没有展示出来。
本来是想在业务页面中在上传成功之后判断ie并单独设置中间这段代码,但是没有成功。
于是在源码的fileinput.js中查找,搜索enable,可以找到这个函数:
enable: function () {
var self = this;
self.isDisabled = false;
self._raise('fileenabled');
self.$element.removeAttr('disabled');
self.$container.find(".kv-fileinput-caption").removeClass("file-caption-disabled");
self.$container.find(
".btn-file, .fileinput-remove, .fileinput-upload, .file-preview-frame button").removeAttr("disabled");
self._initDragDrop();
return self.$element;
},
就是把上传框置为可用。
尝试把判断添加的代码放进去:
enable: function () {
var self = this;
self.isDisabled = false;
self._raise('fileenabled');
self.$element.removeAttr('disabled');
self.$container.find(".kv-fileinput-caption").removeClass("file-caption-disabled");
self.$container.find(
".btn-file, .fileinput-remove, .fileinput-upload, .file-preview-frame button").removeAttr("disabled");
self._initDragDrop();
//判断如果是IE,修改文件框,否则这段div会丢失,文件预览框格式不对。
if(!!window.ActiveXObject || "ActiveXObject" in window){
$(".file-drop-zone").prepend('<div class="file-drop-zone-title">拖拽文件到这里 …<br>支持多文件同时上传</div>');
}
return self.$element;
},
添加之后在IE中正常。