diff --git a/includes/form.inc b/includes/form.inc
index 36b6ca5..f4dc10d 100644
--- a/includes/form.inc
+++ b/includes/form.inc
@@ -1937,7 +1937,15 @@ function form_builder($form_id, &$element, &$form_state) {
     // can be across browsers, if no 'triggering_element' has been identified
     // yet, default it to the first button.
     if (!$form_state['programmed'] && !isset($form_state['triggering_element']) && !empty($form_state['buttons'])) {
-      $form_state['triggering_element'] = $form_state['buttons'][0];
+      // If there was no specific triggering button detected, try to find submitted element by name in POST data.
+      $triggering_element = $form_state['buttons'][0];
+      foreach ($form_state['buttons'] as $button_element) {
+        if (isset($button_element['#name']) && !empty($form_state['input'][$button_element['#name']])) {
+          $triggering_element = $button_element;
+          break;
+        }
+      }
+      $form_state['triggering_element'] = $triggering_element;
     }
 
     // If the triggering element specifies "button-level" validation and submit
