     @element.on "dragend.dropzone", (e) =>
       @emit "dragend", e
 
-  removeEventListeners: -> @element.off ".dropzone"
+    if @options.clickable
+      @element.addClass "clickable"
+      @element.on "click.dropzone", (evt) =>
+        target = o evt.target
+        # Only the actual dropzone or the message element should trigger file selection
+        if target.is(@element) or target.is(@element.find(".message"))
+          @hiddenFileInput.click() # Forward the click
+      @hiddenFileInput.on "change", =>
+        files = @hiddenFileInput.get(0).files
+        @emit "selectedfiles", files
+        @handleFiles files if files.length
+
+
+  removeEventListeners: ->
+    @element.off ".dropzone"
+    if @options.clickable
+      @element.removeClass "clickable"
+      @hiddenFileInput.off()
 
   # Removes all event listeners and clears the arrays.
   disable: ->
     @removeEventListeners()
-    @files = [ ]
     @filesProcessing = [ ]
     @filesQueue = [ ]
+
+  enable: ->
+    @setupEventListeners no # not initial
 
   # Returns a nicely formatted filesize
   filesize: (size) ->

    # If the browser failed, just call the fallback and leave
    return @options.fallback.call this unless capableBrowser


    if @options.clickable
      @element.addClass "clickable"
      @hiddenFileInput = o """<input type="file" multiple />"""
      @element.click (evt) =>
        target = o evt.target
        # Only the actual dropzone or the message element should trigger file selection
        if target.is(@element) or target.is(@element.find(".message"))
          @hiddenFileInput.click() # Forward the click
      @hiddenFileInput.change =>
        files = @hiddenFileInput.get(0).files
        @emit "selectedfiles", files
        @handleFiles files if files.length


    @files = [] # All files
    @filesQueue = [] # The files that still have to be processed

      @element.attr "method", "post" unless @element.attr "method"
    fields

  setupEventListeners: (initial = yes) ->

    if initial
      # First setup all event listeners on the dropzone object itself.
      @on eventName, @options[eventName] for eventName in @events

    noPropagation = (e) ->
      e.stopPropagation()
