diff --git a/modules/field/field.form.inc b/modules/field/field.form.inc
index 845f041..8c5aebf 100644
--- a/modules/field/field.form.inc
+++ b/modules/field/field.form.inc
@@ -76,6 +76,9 @@ function field_default_form($entity_type, $entity, $field, $instance, $langcode,
           '#delta' => $delta,
         );
         if ($element = $function($form, $form_state, $field, $instance, $langcode, $items, $delta, $element)) {
+          // Allow modules to alter the field widget form element.
+          $context['form'] = $form;
+          drupal_alter(array($function, 'field_widget_form'), $element, $form_state, $context);
           // If we're processing a specific delta value for a field where the
           // field module handles multiples, set the delta in the result.
           // For fields that handle their own processing, we can't make
@@ -193,6 +196,16 @@ function field_multiple_value_form($field, $instance, $langcode, $items, &$form,
             '#weight' => 100,
           );
         }
+        // Allow modules to alter the field widget form element.
+        $context = array(
+          'entity_type' => $entity_type,
+          'entity' => $entity,
+          'field' => $field,
+          'instance' => $instance,
+          'form' => $form,
+        );
+        drupal_alter(array($function, 'field_widget_form'), $element, $form_state, $context);
+
         $field_elements[$delta] = $element;
       }
     }
