diff --git a/conditional_fields.api.inc b/conditional_fields.api.inc
index 068afc884..820853e1a 100644
--- a/conditional_fields.api.inc
+++ b/conditional_fields.api.inc
@@ -89,6 +89,13 @@ function conditional_fields_form_after_build($form, FormStateInterface &$form_st
       $selector = conditional_fields_field_selector(NestedArray::getValue($form, [$dependent_location[0]]));
       $effects[$selector] = conditional_fields_get_effect($options);

+      // Apply reset dependent to default if untriggered behavior.
+      if (!empty($options['reset'])) {
+        // Add property to element so conditional_fields_dependent_validate()
+        // can pick it up.
+        $dependent_form_field['#conditional_fields_reset_if_untriggered'] = TRUE;
+      }
+
     }

     if (empty($states)) {
@@ -372,10 +379,9 @@ function conditional_fields_dependent_validate($element, FormStateInterface &$fo
     $form_state_addition['errors'] = $field_errors;
   }

-  $fiel_state_values_count = count($form_state->getValue('conditional_fields_untriggered_dependents'));
   $form_state->setValue([
     'conditional_fields_untriggered_dependents',
-    $fiel_state_values_count,
+    count($form_state->getValue('conditional_fields_untriggered_dependents')),
   ], $form_state_addition);
 }

@@ -459,6 +465,7 @@ function conditional_fields_form_validate($form, FormStateInterface &$form_state
     return;
   }

+  $entity = $form_state->getFormObject()->getEntity();
   $untriggered_dependents_errors = [];

   foreach ($form_state->getValue('conditional_fields_untriggered_dependents') as $field) {
@@ -466,22 +473,22 @@ function conditional_fields_form_validate($form, FormStateInterface &$form_state
     $dependent = NestedArray::getValue($form, $parent);
     $field_values_location = conditional_fields_form_field_get_values($dependent, $form_state);

+    $dependent_field_name = reset($dependent['#array_parents']);
+
     // If we couldn't find a location for the field's submitted values, let the
     // validation errors pass through to avoid security holes.
-    if (!isset($field_values_location[reset($dependent['#array_parents'])])) {
+    if (empty($field_values_location)) {
       if (!empty($field['errors'])) {
         $untriggered_dependents_errors = array_merge($untriggered_dependents_errors, $field['errors']);
       }
       continue;
     }

-    // Save the changed array back in place.
-    // Do not use form_set_value() since it assumes
-    // that the values are located at
-    // $form_state['values'][ ... $element['#parents'] ... ], while the
-    // documentation of hook_field_widget_form() states that field values are
-    // $form_state['values'][ ... $element['#field_parents'] ... ].
-    NestedArray::setValue($form_state['values'], $dependent['#field_parents'], $field_values_location);
+    if (!empty($field['reset'])) {
+      $default = $entity->getFieldDefinition($dependent_field_name)->getDefaultValue($entity);
+      // Save the changed array back in place.
+      $form_state->setValue($dependent_field_name, $default);
+    }

     if (!empty($field['errors'])) {
       $untriggered_dependents_errors = array_merge($untriggered_dependents_errors, $field['errors']);
@@ -520,7 +527,7 @@ function conditional_fields_form_validate($form, FormStateInterface &$form_state
  * Extracts submitted field values during form validation.
  *
  * @return array|NULL
- *   The requested field values parent. Actual field vales are stored under the
+ *   The requested field values parent. Actual field values are stored under the
  *   key $element['#field_name'].
  */
 function conditional_fields_form_field_get_values($element, FormStateInterface $form_state) {
diff --git a/src/Form/ConditionalFieldEditForm.php b/src/Form/ConditionalFieldEditForm.php
index 02dc4d6d9..77426221c 100644
--- a/src/Form/ConditionalFieldEditForm.php
+++ b/src/Form/ConditionalFieldEditForm.php
@@ -246,13 +246,14 @@ public function buildForm(array $form, FormStateInterface $form_state, $entity_t
    * {@inheritdoc}
    */
   public function validateForm(array &$form, FormStateInterface $form_state) {
+    $condition = $form_state->getValue('condition');
     $allowed_values_set = [
       CONDITIONAL_FIELDS_DEPENDENCY_VALUES_AND,
       CONDITIONAL_FIELDS_DEPENDENCY_VALUES_OR,
       CONDITIONAL_FIELDS_DEPENDENCY_VALUES_XOR,
       CONDITIONAL_FIELDS_DEPENDENCY_VALUES_NOT,
     ];
-    if ($form_state->getValue('condition') == 'value') {
+    if ($condition == 'value') {
       if (in_array($form_state->getValue('values_set'), $allowed_values_set) &&
         Unicode::strlen(trim($form_state->getValue('values')) === 0)
       ) {
@@ -262,6 +263,12 @@ public function validateForm(array &$form, FormStateInterface $form_state) {
         $form_state->setErrorByName('regex', $this->t('@name field is required.', ['@name' => $this->t('Regular expression')]));
       }
     }
+
+    // Ensure the 'reset' flag is not set for non-target values.
+    if (!in_array($condition, ['!empty', 'empty', 'value'])) {
+      $form_state->setValue('reset', 0);
+    }
+
     parent::validateForm($form, $form_state);
   }

@@ -436,6 +443,22 @@ public function buildEditContextSettings(array $form, FormStateInterface $form_s
       }
     }

+    $form['reset'] = [
+      '#type' => 'checkbox',
+      '#title' => $this->t('Reset the target to its default values when the form is submitted if the dependency is not triggered.'),
+      '#default_value' => array_key_exists('reset', $settings) ? $settings['reset'] : 0,
+      '#states' => [
+        'visible' => [
+          ':input[name="condition"]' => [
+            ['value' => '!empty'],
+            ['value' => 'empty'],
+            ['value' => 'value'],
+          ],
+        ],
+      ],
+      '#description' => $this->t('Note: This setting only applies if the condition is "Value", "Empty", or "Filled" and may not work with some field types. Also, ensure that the default values are valid, since they will not be validated.'),
+    ];
+
     $form['dependency_advanced'] = [
       '#type' => 'details',
       '#title' => $this->t('Advanced edit context settings', ['@entity' => $label]),
