diff --git a/sources/imce.inc b/sources/imce.inc
index 2fe9bac..b297980 100644
--- a/sources/imce.inc
+++ b/sources/imce.inc
@@ -110,11 +110,15 @@
   $display_id = $element['#id'] . '-imce-display';
   $select_id = $element['#id'] . '-imce-select';
   $element['filefield_imce']['file_path'] = array(
-    '#type' => 'hidden',
+    // IE doesn't support onchange events for hidden fields, so we use a
+    // textfield and hide it from display.
+    '#type' => 'textfield',
     '#value' => '',
+    '#disabled' => TRUE,
     '#attributes' => array(
       'id' => $filepath_id,
-      'onchange' => "if (!jQuery('#$select_id').attr('disabled')) { jQuery('#$select_id').mousedown().disable(); jQuery('#$display_id').html(this.value); }",
+      'onchange' => "if (this.value.length > 0) { jQuery(this).attr('disabled', ''); jQuery('#$select_id').triggerHandler('mousedown'); }",
+      'style' => 'position:absolute; left: -9999em',
     ),
   );
 