Javascript 如何动态更改dropzone中的maxFiles?

Javascript 如何动态更改dropzone中的maxFiles?,javascript,jquery,dropzone,Javascript,Jquery,Dropzone,我的项目中有一个select选项元素,有两个选项,书籍和图像。对于book选项,我只允许上传单个文件。但对于图像选项,我需要允许多个文件选择。我试图这样做,但没有成功: Dropzone.options.frmMediaDropzone = { maxFilesize: 99, acceptedFiles: ".jpeg,.jpg,.png,.gif,.pdf", parallelUploads: 1, addRemoveLinks: true, maxFiles

我的项目中有一个select选项元素,有两个选项,书籍和图像。对于book选项,我只允许上传单个文件。但对于图像选项,我需要允许多个文件选择。我试图这样做,但没有成功:

 Dropzone.options.frmMediaDropzone = {
   maxFilesize: 99,
   acceptedFiles: ".jpeg,.jpg,.png,.gif,.pdf",
   parallelUploads: 1,
   addRemoveLinks: true,
   maxFiles: 100,
   init: function() {
     myDropzone = this;
     this.on("removedfile", function(file) {
       console.log(file);
     });

     this.on("success", function(file, response) {
       console.log(response.imageName);
     });
   }
 };
关于选项更改,我正在尝试以下方法:

Dropzone.options.frmMediaDropzone.maxFiles = 1;

但它不起作用。如果有人有主意,请帮忙。

试试这种方法来解决你的问题

您需要在javascript中定义一个变量

var myDropZone;
在初始化事件中初始化myDropZone VARABLE

myDropzone变得可访问,因此声明

myDropzone.options.maxFiles = 1;
设置可点击:文件上传完成后为false

myDropzone.options.clickable = false;
超过最大文件限制后手动删除文件

myDropzone.on("maxfilesexceeded", function(file) {
    myDropzone.removeFile(file);
});

有两种方法可以做到这一点。您可以动态创建dropzone,然后使用.attr更改其属性,也可以在定义dropzone时在init属性中创建侦听器事件

有关类似示例,请参见此链接。请参见第二个答案:

Thankx Mayank,我刚刚试过,发现它的工作方式仍然允许多个文件,但只上传第一个文件。总比没有好,但dropzone是否可能只允许单个文件?当我手动设置maxFiles=1时,它只允许单个文件,但不能动态工作,用户仍然可以选择多个文件。刚刚选中,但uploadMultiple即使手动也不能动态工作。我想知道多属性只是通过手动设置maxFiles=1来删除的。我已经检查并发现它正在工作,但作为一种解决方法。因为用户仍然可以选择多个图像。选择多个图像可能会让最终用户感到困惑。但是非常感谢你的帮助,因为我从你的回答中学到了很多新东西。目前,我通过实现Ryan的答案获得了我的要求。如果您的问题尚未解决,您可以在完成一次上载后将clickable:false设置为false。非常感谢,但通过将id添加到隐藏输入中,然后访问此id并删除多个属性来解决问题。Thanx Ryan,我认为这会很有帮助。但我有两个dropzonez在同一页上,都有相同的类。是否可以为输入分配名称以获得特定的输入?使用id选择器而不是类选择器。$'myid'而不是$'.myclass'。是的,但我想问的是,如何将id设置为隐藏输入,因为隐藏输入是由dropzone生成的。下面是两个没有id或名称的隐藏输入:我不确定我是否完全理解您的意思。在html中,您的dropzone有一个表单,因此您可以使用该id。如果动态创建dropzone,您可以将其分配给一个变量,然后使用该变量。是的,Ryan,我的表单有一个id,但dropzone会在表单外生成隐藏的输入文件元素,因此表单id无法帮助。但无论如何,根据你的建议,我得到了同样的结果,在dropzone init:函数中添加了这一行,以将id分配给隐藏的输入:this.hiddenFileInput.setAttributeid,fileMedia;现在其他事情都很简单了,因为我在选项更改时使用这个id删除了多个属性。非常感谢你的帮助。
myDropzone.on("maxfilesexceeded", function(file) {
    myDropzone.removeFile(file);
});