如何以编程方式分离 Dropzone?

Posted

技术标签:

【中文标题】如何以编程方式分离 Dropzone?【英文标题】:How do I detach Dropzone programmatically? 【发布时间】:2015-08-05 02:12:00 【问题描述】:

我使用 Dropzone 上传文件客户端。我已经使用 JQuery 以编程方式设置了 Dropzone,我希望能够将其分离,以便用户不再上传文件。我理想的解决方案是简单地使其不可点击,然后应用默认消息向用户指示他们已超过上传次数。

这是一个简单的例子: http://www.dressorganic.co.uk/dropzone-test/turn-off-dropzone-after-load.htm

在这里,我尝试在成功事件后使其不可点击,但没有任何反应。

这是一个链接,指向我真正希望它在成功上传后的样子: http://www.dressorganic.co.uk/dropzone-test/dropzone-disabled.htm

    <!DOCTYPE html>
    <head>
    <meta charset="utf-8">
    <title>Turn off Dropzone after load</title>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script src="/dropzone-test/dropzone/4.0.1/dist/min/dropzone.min.js"></script>
    <link rel="stylesheet" href="/dropzone-test/dropzone/4.0.1/dist/min/dropzone.min.css">

    <script type="text/javascript">
    //<![CDATA[
    $(function() 

       $("#upload1").dropzone(
          createImageThumbnails : false,
          url: "/dropzone-test/handleupload.asp",
          acceptedFiles : ".jpg,.jpeg,.png,.gif",
          dictDefaultMessage : "Click here or drag and drop files to upload",
          addRemoveLinks : false,
          success : function(file) 
             this.removeAllFiles();

             $("#upload1").dropzone(
                 clickable : false,
                 url: "/dropzone-test/handleupload.asp",
                 dictDefaultMessage : "You have exceeded the number of uploads, please remove existing to add more"
              );

          ,
        );

    );  // JQuery
    //]]>
    </script>

    </head>

    <body>

        <div id="singleproductload">

            <div id="upload1" class="dropzone">

            </div>

        </div>

    </body>
    </html>

【问题讨论】:

【参考方案1】:

尝试使用 destroy() 方法删除和重新创建 div 容器。它使使用新参数重新初始化 Dropzone 成为可能。

var url = 'myurl',
    dz

function createDrop(opt) 
    dz && dz.destroy()
    $('#dz_container').find('div').remove()
    $('<div>', 'class':'dropzone',id:'dz').appendTo($('#dz_container'))
    Dropzone.options.dz = opt
    dz = new Dropzone('div#dz',  url: url)


createDrop(dictDefaultMessage:'new message...')

【讨论】:

【参考方案2】:

见How to limit the number of dropzone.js files uploaded?。如果您要允许用户在文件达到最大值后删除文件,您不想破坏或隐藏重要的放置区元素。

【讨论】:

我实际上生成了自己的脚本,其中列出了所有上传的文件并允许您删除它们或添加标题。这就是我想禁用 Dropzone 的原因。因此,我只允许一次上传一个文件,然后删除缩略图,然后列出所有上传文件。【参考方案3】:

为什么不用另一个具有相同 CSS 的 div 替换或隐藏该元素。试试remove、replaceWith、show、hide 或toggle

【讨论】:

我知道我可以做到这一点,但我想做的是分离 dropzone,然后用新参数再次附加它,这样它就变得不可点击并出现新消息。 你试过unbind、off、undelegate或die吗?

以上是关于如何以编程方式分离 Dropzone?的主要内容,如果未能解决你的问题,请参考以下文章

Dropzone - 未捕获的错误:未提供 URL

DropZone.js 上传无法以编程方式进行

如何将图像预加载到 dropzone.js

我如何以编程方式从 kmeans 数据中建立 cv2 掩码的上限和下限

如何防止dragleave干扰嵌套dropzone元素上的dragenter事件?

加载Dropzone.js与Require.js