浏览代码

Fix #303: Validate only files to be dragged and dropped

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

+ 1 - 0
CHANGE.md

@@ -13,6 +13,7 @@ version 4.2.1
         - `id`: the HTML id attribute of the thumbnail container 
         - `id`: the HTML id attribute of the thumbnail container 
       The `event` can be set to return `false` to abort the thumbnail removal.
       The `event` can be set to return `false` to abort the thumbnail removal.
 7. (enh #302): Add Greek (el) translations.
 7. (enh #302): Add Greek (el) translations.
+8. (enh #303): Validate only files to be dragged and dropped.
 
 
 version 4.2.0
 version 4.2.0
 =============
 =============

+ 7 - 4
js/fileinput.js

@@ -776,19 +776,22 @@
             $el.off();
             $el.off();
             self.init(params);
             self.init(params);
             $zone = self.$container.find('.file-drop-zone');
             $zone = self.$container.find('.file-drop-zone');
-            $zone.off('dragenter dragover drop');
+            $zone.off('dragenter dragover dragleave drop');
             $(document).off('dragenter dragover drop');
             $(document).off('dragenter dragover drop');
             self.listen();
             self.listen();
             self.setFileDropZoneTitle();
             self.setFileDropZoneTitle();
         },
         },
         initDragDrop: function () {
         initDragDrop: function () {
             var self = this, $zone = self.$container.find('.file-drop-zone');
             var self = this, $zone = self.$container.find('.file-drop-zone');
-            $zone.off('dragenter dragover drop');
+            $zone.off('dragenter dragover dragleave drop');
             $(document).off('dragenter dragover drop');
             $(document).off('dragenter dragover drop');
             $zone.on('dragenter dragover', function (e) {
             $zone.on('dragenter dragover', function (e) {
+                var hasFiles = $.inArray('Files', e.originalEvent.dataTransfer.types) > -1;
                 e.stopPropagation();
                 e.stopPropagation();
                 e.preventDefault();
                 e.preventDefault();
-                if (self.isDisabled) {
+                if (self.isDisabled || !hasFiles) {
+                    e.originalEvent.dataTransfer.effectAllowed= 'none';
+                    e.originalEvent.dataTransfer.dropEffect= 'none';
                     return;
                     return;
                 }
                 }
                 addCss($(this), 'highlighted');
                 addCss($(this), 'highlighted');
@@ -803,7 +806,7 @@
             });
             });
             $zone.on('drop', function (e) {
             $zone.on('drop', function (e) {
                 e.preventDefault();
                 e.preventDefault();
-                if (self.isDisabled) {
+                if (self.isDisabled || isEmpty(e.originalEvent.dataTransfer.files)) {
                     return;
                     return;
                 }
                 }
                 self.change(e, 'dragdrop');
                 self.change(e, 'dragdrop');

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


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