diff --git a/formatter_field.module b/formatter_field.module
index a6efa4d..37318cc 100644
--- a/formatter_field.module
+++ b/formatter_field.module
@@ -90,11 +90,17 @@ function formatter_field_field_widget_form(&$form, &$form_state, $field, $instan
 
   // Populate $items from $form_state values if available.  This is necessary
   // for the #ajax functionality.
-  if (!empty($form_state['values'])) {
+  if (!empty($form_state['values'][$field['field_name']])) {
     $path = array($field['field_name'], $langcode);
     $items = drupal_array_get_nested_value($form_state['values'], $path);
   }
 
+  // This is required when the form is rebuilt from other AJAX-driven fields, a specific case being multivalue fields with "add another" buttons
+  elseif (!empty($form_state['input'][$field['field_name']])) {
+    $path = array($field['field_name'], $langcode);
+    $items = drupal_array_get_nested_value($form_state['input'], $path);
+  }
+
   if (!empty($items[$delta]['settings']) && is_string($items[$delta]['settings'])) {
     $items[$delta]['settings'] = unserialize($items[$delta]['settings']);
   }
