2014-09-06 65 views
0

我正在使用jQuery Dropzone plugin。在悬浮窗我有一个表,像这样Dropzone将添加的行数添加到dropzone的文件数量?

<table id="data"> 
    <tr> 
     <td>Name</td> 
     <td>Email</td> 
     <td>Phone</td> 
    </tr> 
</table> 

标记可以说我有3个文件下降的悬浮窗,所以我想在表中显示3行的输入字段。所以,对于我已经作出了JS这样

Dropzone.options.documentDropzone = { 
    init: function() { 
     this.on("complete", function (file) { 
      if (this.getUploadingFiles().length === 0 && this.getQueuedFiles().length === 0) { 
       var Length = this.getAcceptedFiles().length; // To get the number of files in the dropzone 
       // Loop to add number of rows after adding files to dropzone 
       for(i=0; i < Length; i+) { 
          var html = $('<tr><td><input type=\"text\" name=\"name\"></td><td><input type=\"text\" name=\"email\"></td><td><input type=\"text\" name=\"phone\"></td></tr>'); 
          $('table#data').append(html); 
         } 
      } 
     } 
    } 
} 

这是工作的罚款一样可以说我已经加入3个文件的第一次,因此是很好的添加3行。另一次可以说我已经添加了2个文件。所以在dropzone我现在有3 + 2 = 5个文件。所以它应该显示5个文件行。但它是这样首先显示它显示3个文件,然后当我添加另外2个文件,然后它显示像3 +(3 + 2)= 8。所以有人可以告诉我如何解决这个问题?任何帮助和建议都会非常可观。谢谢

回答

0

使用removeAllFiles方法将计数器重置为0;假设你使用你的表格来显示上传的文件,而不是dropzone本身。

this.on('complete', function() { 
    if (! this.getUploadingFiles().length && ! this.getQueuedFiles().length) { 
     var Length = this.getAcceptedFiles().length; 
     for (var i = 0; i < Length; i++) { 
      var html = $('<tr><td><input type=\"text\" name=\"name\"></td><td><input type=\"text\" name=\"email\"></td><td><input type=\"text\" name=\"phone\"></td></tr>'); 
      $('table#data').append(html); 
     } 
     this.removeAllFiles(); 
    } 
}); 

编辑:似乎曲解了这个问题,对不起。当添加新文件时,您可以重新绘制表格,就像在做$('table#data').html(html)一样 - 但是这有缺点清除表格中的内容,失去任何活动/焦点状态等。根据我对Dropzone的经验,您必须致电removeAllFiles停止跟踪较早的上传。所以,如果你只使用Dropzone作为上传文件的手段,而不是将其用于显示,那么我会按照上面的建议去做。

+0

它根本不工作。 this.removeAllFiles();正在删除我认为的所有文件。你能重新检查一下吗? – NewUser 2014-09-06 19:44:17

+0

是的,我再次读你的问题,我想我错了。我自己遇到了这个问题,但决定只使用Dropzone作为上传器,而不是用于之后显示上传文件的内容。我不完全确定是否有可能将上传的文件保存在dropzone *中,并将它们的计数重置为零。 – Ben 2014-09-06 19:50:02