浏览代码

Fix #1569: Correctly validate persistent file validation errors and display them

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

+ 1 - 0
CHANGE.md

@@ -5,6 +5,7 @@ Change Log: `bootstrap-fileinput`
 
 **Date:** _under development_
 
+- (bug #1569): Correctly validate persistent file validation errors and display them.
 - (enh #1568): Correct timeout and resumable validation for async uploads.
 - (enh #1536, #1567): Parse response as string in `_parseError` function.
 - (enh #1525, #1566): Handle `filebeforeload` event abort when returning `false`.

+ 10 - 0
js/fileinput.js

@@ -660,6 +660,7 @@
             self.clearFileStack();
             self.fileBatchCompleted = true;
             self.isError = false;
+            self.isPersistentError = false;
             self.cancelling = false;
             self.paused = false;
             self.lastProgress = 0;
@@ -908,6 +909,7 @@
                 $h.addCss(self.$errorContainer, self.msgErrorClass);
             }
             if (!refreshMode) {
+                self._resetErrors();
                 self.$errorContainer.hide();
                 self.previewInitId = 'thumb-' + $el.attr('id');
                 self._initPreviewCache();
@@ -1066,6 +1068,7 @@
                 },
                 clear: function () {
                     var fm = self.fileManager;
+                    self.isPersistentError = false;
                     fm.totalFiles = null;
                     fm.totalSize = null;
                     fm.uploadedSize = 0;
@@ -2183,6 +2186,9 @@
         },
         _resetErrors: function (fade) {
             var self = this, $error = self.$errorContainer;
+            if (self.isPersistentError) {
+                return;
+            }
             self.isError = false;
             self.$container.removeClass('has-error');
             self.$captionContainer.removeClass('is-invalid');
@@ -3357,6 +3363,7 @@
                 fm.setProcessed(id);
                 if (fm.isProcessed()) {
                     self.fileBatchCompleted = true;
+                    chkComplete();
                 }
             };
             chkComplete = function () {
@@ -4817,6 +4824,7 @@
                 throwError = function (mesg, file, previewId, index) {
                     var p1 = $.extend(true, {}, self._getOutData(null, {}, {}, files), {id: previewId, index: index}),
                         p2 = {id: previewId, index: index, file: file, files: files};
+                    self.isPersistentError = true;
                     return isAjaxUpload ? self._showFileError(mesg, p1) : self._showError(mesg, p2);
                 },
                 maxCountCheck = function (n, m, all) {
@@ -5016,6 +5024,7 @@
                         self._initFileActions();
                         $thumb.find('.kv-file-upload').remove();
                     }
+                    self.isPersistentError = true;
                     self.isError = self.isAjaxUpload ? self._showFileError(msg, p1) : self._showError(msg, p2);
                     self._updateFileDetails(numFiles);
                 };
@@ -5422,6 +5431,7 @@
             self._clearFileInput();
             self._resetUpload();
             self.clearFileStack();
+            self.isPersistentError = false;
             self._resetErrors(true);
             if (self._hasInitialPreview()) {
                 self._showFileIcon();

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


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