diff -u -r1.97 captcha.module
--- captcha.module	27 Aug 2009 21:27:03 -0000	1.97
+++ captcha.module	15 Sep 2009 13:46:07 -0000
@@ -197,9 +197,32 @@
   // were used here, but those entry are not available in node preview situations so
   // we use $form_state['clicked_button']['#post']['form_id'] and
   // $form_state['clicked_button']['#post']['captcha_sid'] instead.
-  $posted_form_id = (isset($form_state['clicked_button']['#post']['form_id']) ? $form_state['clicked_button']['#post']['form_id'] : NULL);
-  if ($this_form_id == $posted_form_id && isset($form_state['clicked_button']['#post']['captcha_sid'])) {
-    $captcha_sid = $form_state['clicked_button']['#post']['captcha_sid'];
+  // Internet Explorer does not create a ['clicked_button'] sub array when the form
+  // is submitted by hitting enter so we need to check ['buttons'] too
+  $posted_form_id = NULL;
+  if (isset($form_state['clicked_button']['#post']['form_id'])) {
+    $posted_form_id = $form_state['clicked_button']['#post']['form_id'];
+  }
+  else if (isset($form_state['buttons']['button']['0']['#post']['form_id'])) {
+    $posted_form_id = $form_state['buttons']['button']['0']['#post']['form_id'];
+  }
+  
+  $captcha_sid_set = FALSE;
+  if (isset($form_state['clicked_button']['#post']['captcha_sid']) || isset($form_state['buttons']['button']['0']['#post']['captcha_sid'])) {
+    $captcha_sid_set = TRUE;
+  }
+  
+  if (($this_form_id == $posted_form_id) && $captcha_sid_set) {
+    $captcha_sid = NULL;
+	if (isset($element['#post']['captcha_sid'])) { 
+	  $captcha_sid = $element['#post']['captcha_sid'];
+	}
+	else if (isset($form_state['clicked_button']['#post']['captcha_sid'])) { 
+	  $captcha_sid = $form_state['clicked_button']['#post']['captcha_sid'];
+	}
+	else { 
+	  $captcha_sid = $form_state['buttons']['button']['0']['#post']['captcha_sid'];
+	}
   } else {
     // Generate new CAPTCHA session.
     $captcha_sid = _captcha_generate_captcha_session($this_form_id, CAPTCHA_STATUS_UNSOLVED);
@@ -408,7 +431,15 @@
   // However, they will differ when the lifespan of the CAPTCHA session
   // does not equal the lifespan of a multipage form and then we have to
   // pick the right one.
-  $csid = $form_state['clicked_button']['#post']['captcha_sid'];
+  // Internet Explorer does not create a ['clicked_button'] sub array when the form
+  // is submitted by hitting enter so we need to check ['buttons'] too
+  $csid = NULL;
+  if (isset($form_state['clicked_button']['#post']['captcha_sid'])) { 
+    $csid = $form_state['clicked_button']['#post']['captcha_sid'];
+  }
+  else if (isset($form_state['buttons']['button']['0']['#post']['captcha_sid'])) {
+    $csid = $form_state['buttons']['button']['0']['#post']['captcha_sid'];
+  }
 
   $solution = db_result(db_query('SELECT solution FROM {captcha_sessions} WHERE csid = %d AND status = %d', $csid, CAPTCHA_STATUS_UNSOLVED));
 
