Dropzone JS全球活动

时间:2015-11-03 19:00:16

标签: javascript dropzone.js

我可能有这个错误,但Dropzone JS似乎以一种非常奇怪的方式做事。 http://www.dropzonejs.com/#events

这是添加事件的推荐方法

Dropzone.options.myAwesomeDropzone = {
  init: function() {
    this.on("addedfile", function(file) { alert("Added file."); });
  }
};

这假设您知道myAwesomeDropzone是什么。但是如果你以编程方式创建它们,那么你可能不知道myAwesomeDropzone是什么。它可以是任何东西,例如如果您根据某个ID在页面上有三个不同的Dropzones,那么标识符将不是myAwesomeDropzone甚至是可猜测的。

能够做到

会很方便
$(".dropzone").on("addedfile", function(file) {
    alert("hello");
});

但它不起作用。我只是希望能够将全局事件附加到我的所有下拉区域。

3 个答案:

答案 0 :(得分:1)

如果您在同一页面中有多个下拉区域,并且每个下拉区域都需要具有不同的配置,则必须单独初始化每个下拉区域。 我看到你正在使用jQuery知道你也可以使用dropzone中已包含的Dropzone jQuery插件初始化dropzone元素。

例如,假设每个dropzone接受不同的文件类型:

Dropzone.autoDiscover = false;

$("#dropzone1").dropzone({
  url: 'urlForDropzone1.php', 
  acceptedFiles: 'application/pdf',
  init: function(){
    this.on("addedfile", function(file) { 
    alert("Added" + file.name + " on Dropzone 1."); 
    }),
    this.on("success", function(file) {
        alert(file.name " Uploaded from Dropzone 1")
    })
  }
});

$("#dropzone2").dropzone({
  url: 'urlForDropzone2.php', 
  acceptedFiles: 'image/*,.jpeg,.jpg,.png,.gif',
  init: function(){
    this.on("addedfile", function(file) { 
    alert("Added" + file.name + " on Dropzone 2."); 
    }),
    this.on("success", function(file) {
        alert(file.name " Uploaded from Dropzone 2")
    })
  }
});

请注意,首先您需要禁用自动发现功能,然后单独初始化每个dropzone,url是可选的,如果您已经在html中使用它们,则不需要包含它们。

答案 1 :(得分:0)

你可以将dropzone与你的第二个片段非常相似。在初始化dropzone时直接附加配置。

  new Dropzone(".dropzone", {
                    url: 'someUrl',
                    addedfile: function () {
                        alert('Hallo');
                    }
                });

答案 2 :(得分:0)

以下是有效的,我的问题是我有两次dropzone.js,这使Dropzone.autoDiscover = false;被忽略。

Dropzone.autoDiscover = false;

$(".dropzone").on("addedfile", function(file) {
    alert("hello");
});