Explorar o código

Fix #181: More correct fix for IE11 when file input is cleared

Kartik Visweswaran %!s(int64=10) %!d(string=hai) anos
pai
achega
a528c98d02
Modificáronse 3 ficheiros con 9 adicións e 2 borrados
  1. 3 0
      examples/index.html
  2. 6 2
      js/fileinput.js
  3. 0 0
      js/fileinput.min.js

+ 3 - 0
examples/index.html

@@ -52,6 +52,9 @@
     $("#file-0").fileinput({
         'allowedFileExtensions' : ['jpg', 'png','gif'],
     });
+        $("#file-0").on('fileselectnone', function() {
+            alert("HUH! No Files");
+        });
     $("#file-1").fileinput({
         uploadUrl: '#', // you must set a valid URL here else you will get an error
         allowedFileExtensions : ['jpg', 'png','gif'],

+ 6 - 2
js/fileinput.js

@@ -308,6 +308,7 @@
                 }
                 self[key] = value;
             });
+            self.fileInputCleared = false;
             if (isEmpty(self.allowedPreviewTypes)) {
                 self.allowedPreviewTypes = defaultPreviewTypes;
             }
@@ -840,6 +841,7 @@
             } else { // normal input clear behavior for other sane browsers
                 $el.val('');
             }
+            self.fileInputCleared = true;
         },
         resetUpload: function () {
             var self = this;
@@ -1548,9 +1550,11 @@
         },
         change: function (e) {
             var self = this, $el = self.$element;
-            if (!self.isUploadable && isEmpty($el.val())) { // IE 11 fix
+            if (!self.isUploadable && isEmpty($el.val()) && self.fileInputCleared) { // IE 11 fix
+                self.fileInputCleared = false;
                 return;
             }
+            self.fileInputCleared = false;
             var tfiles, msg, total, $preview = self.$preview, isDragDrop = arguments.length > 1,
                 files = isDragDrop ? e.originalEvent.dataTransfer.files : $el.get(0).files,
                 isSingleUpload = isEmpty($el.attr('multiple')),
@@ -1562,8 +1566,8 @@
                 };
             self.resetUpload();
             self.hideFileIcon();
-            self.$container.find('.file-drop-zone .' + self.dropZoneTitleClass).remove();
             if (isDragDrop) {
+                self.$container.find('.file-drop-zone .' + self.dropZoneTitleClass).remove();
                 tfiles = files;
             } else {
                 if (e.target.files === undefined) {

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
js/fileinput.min.js


Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio