dropzone.js函数getQueuedFiles导致"太多递归”;

dropzone.js function getQueuedFiles causes "too much recursion"

本文关键字:太多 递归 quot js 函数 getQueuedFiles 导致 dropzone      更新时间:2023-09-26

我正在使用dropzone.js,并试图检查队列中是否仍有文件。

我有一张带降落区的表格。点击表单的提交按钮,首先上传文件,然后提交表单。我的JavaScript代码如下:

var fileDropzone = new Dropzone(document.getElementById('fileDropzone'),
    {
        url: uploadUrl,
        addRemoveLinks: true,
        autoProcessQueue: false,
        autoDiscover: false,
        dictDefaultMessage: transUploadFiles
    }
);
var success = false;
$('form.uploadForm').submit(function (e) {
    var that = this;
    var filesInQueue = fileDropzone.getQueuedFiles().length;
    if (!success && filesInQueue > 0) {
        e.preventDefault();
        fileDropzone.processQueue();
        fileDropzone.on("success", function () {
            fileDropzone.options.autoProcessQueue = true;
        });
        fileDropzone.on("queuecomplete", function (file) {
            success = true;
            $(that).submit();
        });
    }
});

为了检查队列中是否有文件,我使用函数getQueuedFiles(),但这会导致控制台中出现错误"递归过多"。

如果队列中没有文件,则使用如下if语句会导致console.log出现321次。

if(fileDropzone.getQueuedFiles().length === 0) {
    console.log("no files in queue");
}

是我做错了什么,还是有其他可能检查队列中是否还有文件?

尝试用POJS that.submit();替换$(that).submit();,这样可以保证在不重新触发onsubmit处理程序的情况下提交表单。