diff --git modules/field_ui/field_ui.admin.inc modules/field_ui/field_ui.admin.inc
index 96beb13..93ff940 100644
--- modules/field_ui/field_ui.admin.inc
+++ modules/field_ui/field_ui.admin.inc
@@ -668,7 +668,17 @@ function _field_ui_field_overview_form_validate_add_new($form, &$form_state) {
 
     // Missing widget type.
     if (!$field['widget_type']) {
-      form_set_error('fields][_add_new_field][widget_type', t('Add new field: you need to select a widget.'));
+      // If there's only one valid widget type then use that,
+      // so the select list can be disabled in client-side using JavaScript.
+      if (count($widget_types) == 1) {
+        $existing_field = field_info_field($field['field_name']);
+        $widget_types = field_ui_widget_type_options($existing_field['type']);
+        $widget_type = key($widget_types);
+        form_set_value($form['table']['_add_new_field']['widget_type'], $widget_type, $form_state);
+      }
+      else {
+        form_set_error('_add_new_field][widget_type', t('Add new field: you need to select a widget.'));
+      }
     }
     // Wrong widget type.
     elseif ($field['type']) {
diff --git modules/field_ui/field_ui.css modules/field_ui/field_ui.css
index c25d2a4..16c7473 100644
--- modules/field_ui/field_ui.css
+++ modules/field_ui/field_ui.css
@@ -26,7 +26,14 @@ table.field-ui-overview tr.region-add-new-title {
   display: none;
 }
 
+#field-overview select[disabled] {
+  color: #808080;
+}
+
 /* 'Manage display' overview */
+#field-display-overview select[disabled] { 
+  color: #808080;
+}
 #field-display-overview .field-formatter-summary-cell {
   line-height: 1em;
 }
diff --git modules/field_ui/field_ui.js modules/field_ui/field_ui.js
index b63399f..383c34e 100644
--- modules/field_ui/field_ui.js
+++ modules/field_ui/field_ui.js
@@ -68,9 +68,18 @@ Drupal.fieldUIFieldOverview = {
 jQuery.fn.fieldUIPopulateOptions = function (options, selected) {
   return this.each(function () {
     var disabled = false;
-    if (options.length == 0) {
-      options = [this.initialValue];
+    var counter = 0;
+
+    for (i in options) {
+      counter++;
+    }
+
+    // Disable widget select box if there's no more than one selection.
+    if (counter <= 1) {
       disabled = true;
+      if (counter == 0) {
+        options = [this.initialValue];
+      }
     }
 
     // If possible, keep the same widget selected when changing field type.
