【问题标题】:Multiple dropzone with single function具有单一功能的多个拖放区
【发布时间】:2016-02-21 03:02:23
【问题描述】:

我有一个包含多个 Dropzones 的表单用于图片上传。以下是我的代码:

HTML

<form>
    <input type="text">
    <div>
        <div>
            <div class="dropzone dropzone-previews" id="test-image1"></div>
            <div class="dropzone dropzone-previews" id="test-image2"></div>
        </div>
        <div>
            <div class="dropzone dropzone-previews" id="test-image3"></div>
            <div class="dropzone dropzone-previews" id="test-image4"></div>
        </div>
    </div>
</form>

JavaScript:

$(function () {
    Dropzone.options.testImage1 = {
        url: "test1.php",
        maxFiles : 10,
        paramName: "file1", 
        maxFilesize: 2,
    }
    Dropzone.options.testImage2 = {
        url: "test2.php",
        maxFiles : 20,
        paramName: "file2", 
        maxFilesize: 10,
    }
    Dropzone.options.testImage3 = {
        url: "test3.php",
        maxFiles : 30,
        paramName: "file3", 
        maxFilesize: 20,
    }
    Dropzone.options.testImage4 = {
        url: "test4.php",
        maxFiles : 40,
        paramName: "file4", 
        maxFilesize: 5,
    }       
});

现在我为 4 个 div 提供了 4 个不同的 Dropzone 函数。这工作正常。

实际上,在我的项目中,图像上传有很多用途,我将在不同的页面上多次使用 Dropzone。

我的问题是——我可以编写一个 Dropzone 函数并传递参数值,如 Id、maxFiles、paramName、maxFilesize 以及可能是其他值,这样我就不必编写多个 Dropzone 函数了吗?

提前致谢。

【问题讨论】:

  • 我不确定我是否理解你的问题,你可以编写一个函数来接受你想要的那些参数,但无论如何你都需要调用该函数 4 次。
  • @wallek876 - 是的,我知道。我需要调用该函数 4 次。但是在我的 dropzone 函数中,有很多选项,我需要为每个 div id 一次又一次地编写这些选项。我想知道如何为它编写一个函数。

标签: javascript jquery dropzone.js


【解决方案1】:

好吧,我不确定这是否是您要查找的内容,但我想到的一件事是您可以使用 div id 来设置选项,然后在 javascript 中使用该 id 来配置 dropzone 元素。

这是一个通用示例,其中包含您使用 jQuery 在问题中提到的参数:

html:

<div class="dropzone" id="image-1-10-1"></div>
<div class="dropzone" id="image-2-20-2"></div>
<div class="dropzone" id="image-3-30-3"></div>
<div class="dropzone" id="image-4-40-4"></div>

js:

Dropzone.autoDiscover = false;

$('.dropzone').each(function(){
    var options = $(this).attr('id').split('-');
    var dropUrl = 'test' + options[1] + '.php';
    var dropMaxFiles = parseInt(options[2]);
    var dropParamName = 'file' + options[1];
    var dropMaxFileSize = parseInt(options[3]);

    $(this).dropzone({
        url: dropUrl,
        maxFiles: dropMaxFiles,
        paramName: dropParamName,
        maxFilesSize: dropMaxFileSize

        // Rest of the configuration equal to all dropzones
    });

});

【讨论】:

    猜你喜欢
    • 2019-10-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-26
    • 2020-01-12
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    • 2021-06-11
    相关资源
    最近更新 更多