--- number.inc	2012-10-24 12:14:20.008108747 -0400
+++ number.inc.new	2012-10-24 12:13:45.576110068 -0400
@@ -20,6 +20,7 @@ function _webform_defaults_number() {
       'type' => 'textfield',
       'field_prefix' => '',
       'field_suffix' => '',
+      'disabled' => 0,
       'unique' => 0,
       'title_display' => 0,
       'description' => '',
@@ -99,6 +100,15 @@ function _webform_edit_number($component
     '#weight' => 1.2,
     '#parents' => array('extra', 'field_suffix'),
   );
+  $form['display']['disabled'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Disabled'),
+    '#return_value' => 1,
+    '#description' => t('Make this field non-editable. Useful for setting an unchangeable default value.'),
+    '#weight' => 11,
+    '#default_value' => $component['extra']['disabled'],
+    '#parents' => array('extra', 'disabled'),
+  );
   $form['display']['decimals'] = array(
     '#type' => 'select',
     '#title' => t('Decimal places'),
@@ -318,6 +328,11 @@ function _webform_render_number($compone
     $element['#element_validate'][] = 'webform_validate_unique';
   }
 
+  // Set readonly if disabled
+  if ($component['extra']['disabled']) {
+    $element['#attributes']['readonly'] = 'readonly';
+  }
+
   return $element;
 }
 
