2015-09-05 36 views
2

我定制dropzone.js悬浮窗的init()不执行

我的布局:

enter image description here

我的HTML内容是:

<form action="/Drag/SaveUploadedData/" enctype="multipart/form-data" id="dropzoneForm"> 
<div class="dropzone" id="mydropzone"></div> 
<div style="position:absolute;bottom:0;"> 
    <ul style="color:red;"> 
     <li style="list-style-type:square;"> 
      Invalid file name/type 
     </li> 
    </ul> 
</div> 
<input type='file' id='fileUpload' style='opacity:0;' multiple onchange="javascript: addFilesToDropzone();" /> 

我正在使用一个链接作为一个文件U PLOAD称为“浏览

在点击这个,会打开一个打开文件对话框,我们将选择文件。我写过onchange="javascript: addFilesToDropzone();"事件#fileUpload。 这将触发下面的函数,

function addFilesToDropzone() 
{ 
    document.getElementById('mydropzone').files = document.getElementById('fileUpload').files; 

    Dropzone.options.mydropzone = { 
     init: function() { 
      //var dropZone = this; 
      if (document.getElementById('mydropzone').files.length > 0) { 
       alert(); 
       $.each(files, function (index, item) { 
        this.emit('addedfile', 'uploading'); 
       }); 
      } 

     } 
    }; 
} 

我的问题是,它不执行Dropzone.options.mydropzone线,因此它不执行init()

我从#fileUpload输入的文件,但它不是为了调用addedfile方法dropzone.js

为什么它正在发生执行init()?以及如何解决这个问题?

+0

我不认为这会影响你的问题,但“JavaScript的:”不再被认为是必要的。 –

+0

我不熟悉dropzone,因为没有小提琴我不能肯定地说,但是..我没有看到你的代码中的任何地方,你实际上正在调用init函数。 'Dropzone.options.mydropzone'只是一个javascript对象,你实际上并没有“看到”它执行。 – Saar

+0

我在Dropzone.options.mydropzone中调用init:function(){}。但它不是呼唤。这就是问题@萨尔 – Vikash

回答

3

在此代码中,您正在定义一个名为mydropzone的JavaScript对象,该对象位于Dropzone对象内部的对象选项中。

里面的对象mydropzone你定义了一个叫做init的函数。

Dropzone.options.mydropzone = { 
     init: function() { 
      //var dropZone = this; 
      if (document.getElementById('mydropzone').files.length > 0) { 
       alert(); 
       $.each(files, function (index, item) { 
        this.emit('addedfile', 'uploading'); 
       }); 
      } 

     } 
    }; 
现在

为了调用这个函数,你需要做的:

Dropzone.options.mydropzone.init(); 
+0

非常感谢! – Vikash