diff --git a/media.module b/media.module
index 9781d08..ceb6bb4 100644
--- a/media.module
+++ b/media.module
@@ -991,13 +991,19 @@ function media_element_validate(&$element, &$form_state) {
     $lang = $element['#language'];
 
     $has_value = FALSE;
-    foreach ($form_state['values'][$field_name][$lang] as $value) {
-      if ($value['fid']) {
+
+    // Get all field items of the widget, remove current key from the element.
+    $widget_parents = $element['#array_parents'];
+    array_pop($widget_parents);
+    $items = drupal_array_get_nested_value($form_state['values'], $widget_parents);
+    foreach ($items as $value) {
+      if (is_array($value) && $value['fid']) {
         $has_value = TRUE;
       }
     }
     if (!$has_value) {
-      form_error($element, t('%element_title is required.', array('%element_title' => $element['#title'])));
+      $instance = field_widget_instance($element, $form_state);
+      form_error($element, t('%element_title is required.', array('%element_title' => $instance['label'])));
     }
   }
 }
