【问题标题】:dropzone.js function getQueuedFiles causes "too much recursion"dropzone.js 函数 getQueuedFiles 导致“递归过多”
【发布时间】:2015-11-20 12:37:48
【问题描述】:

我正在使用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");
}

我是不是做错了什么,或者是否有其他方法可以检查队列中是否还有文件?

【问题讨论】:

    标签: javascript jquery recursion dropzone.js


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2012-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 2018-06-19
      • 2011-02-26
      相关资源
      最近更新 更多