浏览代码

Fix #40: Fix IE inability to clear fileinput values

Kartik Visweswaran 10 年之前
父节点
当前提交
7a9161d1cb
共有 3 个文件被更改,包括 16 次插入4 次删除
  1. 1 0
      CHANGE.md
  2. 15 4
      js/fileinput.js
  3. 0 0
      js/fileinput.min.js

+ 1 - 0
CHANGE.md

@@ -6,6 +6,7 @@ version 2.5.0
 - (bug #37): HTML encode text content for preview in modal.
 - (enh #38): Highlight error CSS in file caption on validation error.
 - (bug #39): HTML encode caption hover title.
+- (bug #40): Fix IE (ver < 11) inability to clear fileinput values.
 
 version 2.4.0
 =============

+ 15 - 4
js/fileinput.js

@@ -281,7 +281,7 @@
                 self.clear(false);
                 $cap.focus();
             });
-            $($el[0].form).on('reset', $.proxy(self.reset, self));
+            $el.closest('form').on('reset', $.proxy(self.reset, self));
             self.$container.on('click', '.fileinput-remove:not([disabled])', $.proxy(self.clear, self));
         },
         refresh: function (options) {
@@ -341,16 +341,27 @@
                 $(this).remove();
             });
         },
-        clear: function (e) {
-            var self = this;
+        clearFileInput: function() {
+            var self = this, $el = self.$element;
+            // Fix for IE ver < 11, that does not clear file inputs
+            if (/MSIE/.test(navigator.userAgent)) {
+                $el.wrap('<form>').closest('form').trigger('reset');
+                $el.unwrap();
+            } else {
+                $el.val('');
+            }
+        },
+        clear: function () {
+            var self = this, e = arguments.length && arguments[0];
             if (e) {
                 e.preventDefault();
             }
             if (self.reader instanceof FileReader) {
                 self.reader.abort();
             }
-            self.$element.val('');
+            self.clearFileInput();
             self.resetErrors(true);
+            
             if (e !== false) {
                 self.$element.trigger('change');
                 self.$element.trigger('fileclear');

文件差异内容过多而无法显示
+ 0 - 0
js/fileinput.min.js


部分文件因为文件数量过多而无法显示