diff --git a/js/dropzone.integration.js b/js/dropzone.integration.js
index e81800f..ee5b0c1 100644
--- a/js/dropzone.integration.js
+++ b/js/dropzone.integration.js
@@ -14,6 +14,8 @@
   Drupal.behaviors.dropzonejsIntegraion = {
     attach: function (context) {
       Dropzone.autoDiscover = false;
+
+      // TODO: init functionality should support multiple drop zones on page
       var selector = $(".dropzone-enable");
       selector.addClass("dropzone");
       var input = selector.siblings('input');
@@ -24,9 +26,20 @@
         addRemoveLinks: false
       };
       var instanceConfig = drupalSettings.dropzonejs.instances[selector.attr('id')];
+
+      // if DropzoneJS instance is already registered on Element. There is no
+      // need to register it again.
+      if (selector.once('register-dropzonejs').length !== selector.length) {
+        return;
+      }
+
+      // If instance exists for configuration, but it's detached from element
+      // then destroy detached instance and create new instance.
       if (instanceConfig.instance !== undefined) {
         instanceConfig.instance.destroy();
       }
+
+      // Initialize DropzoneJS instance for element.
       var dropzoneInstance = new Dropzone("#" + selector.attr("id"), $.extend({}, instanceConfig, config));
 
       // Other modules might need instances.
diff --git a/modules/eb_widget/js/dropzonejs_eb_widget.ief_edit.js b/modules/eb_widget/js/dropzonejs_eb_widget.ief_edit.js
index ada3bed..28d7ec7 100644
--- a/modules/eb_widget/js/dropzonejs_eb_widget.ief_edit.js
+++ b/modules/eb_widget/js/dropzonejs_eb_widget.ief_edit.js
@@ -16,10 +16,25 @@
             var $submit = $form.find('.is-entity-browser-submit');
             $submit.prop("disabled", false);
 
-            item.instance.on("queuecomplete", function () {
+            var autoSubmitDropzone = function() {
               var $form = this;
-              $('#edit-edit', $form).trigger('mousedown');
-            }.bind($form));
+
+              // Trigger generation of IEF form only, when there are new
+              // accepted files and there are no rejected files.
+              if (item.instance.getAcceptedFiles().length > 0 && item.instance.getRejectedFiles().length === 0) {
+                $('#edit-edit', $form).trigger('mousedown');
+
+                item.instance.removeAllFiles();
+              }
+            }.bind($form);
+
+            item.instance.on("queuecomplete", function() {
+              autoSubmitDropzone();
+            });
+
+            item.instance.on("removedfile", function() {
+              autoSubmitDropzone();
+            });
           }
         });
       }
