2017-10-02 2 views
0

Cela devrait être simple, mais je ne trouve pas la réponse!Comment accéder à Dropzone?

Compte tenu de cette javascript:

Dropzone.options.myDropzone = { 
    dictDefaultMessage: "Drop files here or Click to upload", 
    paramName: "file", 
    maxFilesize: 5 
}; 

et ce HTML:

<form action="/whatever" class="dropzone" id="myDropzone"> 
<input type="hidden" name="userid" value="1"> 
</form> 

... Dropzone fonctionne parfaitement. Mais, je dois exécuter quelque chose après le téléchargement est terminé, donc j'ajouté ceci:

myDropzone.on("success", function(file) { 
    // do something 
}); 

Mais, cela ne fonctionne pas. Il dit "myDropzone.on n'est pas une fonction." Donc, clairement, j'ai besoin d'une sorte d'accesseur à Dropzone. J'ai essayé d'ajouter var myDropzone = au code Dropzone.options ci-dessus, et cela n'a pas aidé. J'ai essayé de faire:

var myDropzone = new Dropzone("#myDropzone"); 

... et je reçois "dropzone est déjà attaché." J'ai essayé de renommer l'ID et la classe de l'élément de formulaire, et pendant que les erreurs disparaissent, aucune Dropzone n'apparaît non plus. Alors, maintenant que mon niveau de frustration a atteint 100%, je suis là. Aidez-moi, s'il vous plaît? :) Je vous remercie.

+0

vous avez probablement déjà vérifié cela :) mais simplement pour éliminer les problèmes potentiels: êtes-vous sûr que votre inclusion de la bibliothèque dropzone est bien et fonctionne? le voyez-vous chargé? – Rose

+1

Puisqu'il fonctionne parfaitement jusqu'à ce que j'essaie d'ajouter le code pour agir à la fin, je dirais que c'est bon. – RobG

Répondre

0

Je ne sais pas c'est la cause de votre problème, mais simplement essayer d'aider :) (voulait mettre cela comme réponse, mais a pensé qu'il serait plus visible de cette façon)

Voici quelque chose à essayer: En les docs, http://www.dropzonejs.com/#installation la façon dont ils initialize options est:

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

vous devriez peut-être initialize de cette manière afin de pouvoir utiliser le « on » après

myDropzone.on("addedfile", function(file) { 
    /* Maybe display some more file information on your page */ 
    }); 
+0

Se rapprocher! Plus d'erreur en utilisant votre suggestion, MAIS, cela n'agit pas sur l'événement on ("success"). – RobG

0

Voici ce que j'ai fini par faire ...

J'ai éliminé l'élément Form. J'ai donné class = "dropzone" et id = "myDropzone" à l'élément de forme contenant DIV. Maintenant mon code ressemble à ceci:

Dropzone.options.myDropzone = { 
    dictDefaultMessage: "Drop files here or Click to upload", 
    paramName: "file", 
    maxFilesize: 5 // MB 
}; 

var myDropzone = new Dropzone("div#myDropzone", { url: "/path/whatever" }); 

myDropzone.on("success", function(file) { 
    alert("success"); 
    getUserFiles(); 
}); 

... et cela fonctionne.