diff --git a/conditional_fields.module b/conditional_fields.module
index 31c76ec..796d227 100644
--- a/conditional_fields.module
+++ b/conditional_fields.module
@@ -686,8 +690,21 @@ function conditional_fields_dependent_validate($element, &$form_state, $form) {
   $dependent = $element[$element['#language']];
 
   // Check if this field's dependencies were triggered.
-  if (conditional_fields_evaluate_dependencies($dependent, $form, $form_state)) {
-    return;
+  $triggered = conditional_fields_evaluate_dependencies($dependent, $form, $form_state);
+  $error_key = implode('][', $dependent['#parents']);
+
+  if ($evaluated_dependencies = conditional_fields_evaluate_dependencies($dependent, $form, $form_state, FALSE)) {
+    foreach ($evaluated_dependencies[$dependent['#field_name']] as $operator) {
+      foreach ($operator as $state => $result) {
+        if ($result && $state == 'required' && $triggered) {
+          $input_state = drupal_array_get_nested_value($form_state['input'], $dependent['#parents']);
+
+          if (empty($input_state)) {
+            form_set_error($error_key, t('The !title field is required', array('!title' => $dependent['#title'])));
+          }
+        }
+      }
+    }
   }
 
   // Mark submitted values for removal. We have to remove them after all fields
@@ -1008,7 +1025,7 @@ function conditional_fields_evaluate_grouping($groups) {
  * @param $dependent
  *   The field form element in the current language.
  */
-function conditional_fields_evaluate_dependencies($dependent, $form, $form_state) {
+function conditional_fields_evaluate_dependencies($dependent, $form, $form_state, $grouping = TRUE) {
   $dependencies = $form['#conditional_fields'][$dependent['#field_name']]['dependees'];
   $evaluated_dependees = array();
 
@@ -1030,10 +1047,20 @@ function conditional_fields_evaluate_dependencies($dependent, $form, $form_state
       $values = $values[$dependee_parent[$dependee]['#language']];
     }
 
-    $evaluated_dependees[$dependent['#field_name']][$dependency['options']['grouping']][] = conditional_fields_evaluate_dependency('edit', $values, $dependency['options']);
+    if ($grouping) {
+      $evaluated_dependees[$dependent['#field_name']][$dependency['options']['grouping']][] = conditional_fields_evaluate_dependency('edit', $values, $dependency['options']);
+    }
+    else {
+      $evaluated_dependees[$dependent['#field_name']][$dependency['options']['grouping']][$dependency['options']['state']] = conditional_fields_evaluate_dependency('edit', $values, $dependency['options']);
+    }
   }
 
-  return conditional_fields_evaluate_grouping($evaluated_dependees[$dependent['#field_name']]);
+  if ($grouping) {
+    return conditional_fields_evaluate_grouping($evaluated_dependees[$dependent['#field_name']]);
+  }
+  else {
+    return $evaluated_dependees;
+  }
 }
 
 /**
