diff --git a/core/lib/Drupal/Core/Form/FormBuilder.php b/core/lib/Drupal/Core/Form/FormBuilder.php
index 9a19f55..1c8ef11 100644
--- a/core/lib/Drupal/Core/Form/FormBuilder.php
+++ b/core/lib/Drupal/Core/Form/FormBuilder.php
@@ -1411,12 +1411,17 @@ public function doBuildForm($form_id, &$element, &$form_state) {
         $form_state['triggering_element'] = $form_state['buttons'][0];
       }
 
-      // If the triggering element specifies "button-level" validation and
-      // submit handlers to run instead of the default form-level ones, then add
-      // those to the form state.
+      // If the triggering element specifies "button-level" validation and submit 
+      // handlers to run in addition to or instead of the default form-level ones, 
+      // then add those to the form state.
       foreach (array('validate', 'submit') as $type) {
         if (isset($form_state['triggering_element']['#' . $type])) {
-          $form_state[$type . '_handlers'] = $form_state['triggering_element']['#' . $type];
+          $form_state[$type . '_handlers'] = array();
+          // If requested, add the form's base handlers to the list first.
+          if (!empty($form_state['triggering_element']['#execute_base_' . $type . '_handlers'])) {
+            $form_state[$type . '_handlers'] += $form_state['#' . $type];
+          }
+          $form_state[$type . '_handlers'] += $form_state['triggering_element']['#' . $type];
         }
       }
 
