将 maxfiles 动态添加到 dropzone

add maxfiles dynamically to dropzone

我将 dropzone 与 Laravel 一起使用,我需要在单击按钮时添加最大数量的照片,但它不是采用变量的值,而是当我更改并输入数字时工作正常。

('#add').on("click", function(e){
  e.preventDefault();
  var max_photos = $("#num_photos").val();
  max_photos = 5 - max_photos;
  $( "#add-photos" ).fadeIn();
});

Dropzone.autoDiscover = false;
var myDropzone2 =  new Dropzone("div#add-photos-edit", {      
      url: "../../update/store2", 
      autoProcessQueue:false,
      parallelUploads: 100,
      uploadMultiple: true,
      maxFilesize:5,
      maxFiles: max_photos,
      acceptedFiles: ".jpeg,.jpg,.png,.gif",
      headers: {
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
      },
      init: function() {
          myDropzone2 = this; // closure
          var btn = document.querySelector("#submit");         
          btn.addEventListener("click", function(e) {
              e.preventDefault();
              e.stopPropagation();

          });
          this.on("sending", function(file, xhr, data) {
          });

          this.on("success", function(file, xhr){
            alert(file.xhr.response);

          })
      }

});


$("#submit").click( function(e){
      e.preventDefault();
      myDropzone2.processQueue();
});

很可能在初始化 dropzone 元素之前未设置变量 max_photos,您可以反过来处理它,初始化 dropzone 然后设置 maxFiles 选项。

Dropzone.autoDiscover = false;

var myDropzone2 =  new Dropzone("div#add-photos-edit", {
  /*
   * Your configuration
   */
});

$('#add').on("click", function(e){

  var max_photos = $("#num_photos").val();
  max_photos = 5 - max_photos;
  $( "#add-photos" ).fadeIn();

  myDropzone2.options.maxFiles = max_photos;

});