Why Isn't #value valid for 'textfield' form types in Drupal 7? I can set #default_value but there is no #value for text fields?

http://api.drupal.org/api/drupal/developer--topics--forms_api_reference.html/7#textfield

Is there a work around?
Form API is an abstraction over regular HTML form elements, so there are cases where attributes don't match up exactly.

In the context of Form API, #value is for values you don't want the user changing, and doesn't make sense with respect to text &lt;input&gt; controls.

Instead, you want to use #default_value, which is for values you do want the user to change. That is:

$form['mytextfield'] = array(
   'type' =&gt; 'textfield',
   '#default_value' =&gt; 'Foo',
);


is the same as:

&lt;input type="text" value="Foo" /&gt;


If you want to mimic the behavior of Form API's #value (i.e. provide a default value and prevent the user from changing it), use the #disabled property:

$form['mytextfield'] = array(
   'type' =&gt; 'textfield',
   '#default_value' =&gt; 'Foo',
   '#disabled' =&gt; TRUE,
);


For more information about the internals, check out form_builder(), which constructs the render array for the form and _form_builder_handle_input_element(), which replaces #value with the value of #default_value prior to rendering.