Can I move the description of a form field between the label and the field? I have a form with input fields such as this one:

'sex' =&gt; array(
    '#type' =&gt; 'radios',
    '#title' =&gt; t('Sex'),
    '#options' =&gt; array('m' =&gt; t('M'), 'f' =&gt; t('F')),
    '#description' =&gt; t("We use this to write Mr. or Mrs. in the letters we send you.")
)


By default, this prints the label first ('Sex'), then the radio buttons, and then the description. I would like to print out the label followed immediately by the description and have the radio buttons appear last. How can I achieve this? I know how to load a stylesheet, but in this case it would be nice for the html to appear in the correct order: &lt;label /&gt;&lt;div class="description" /&gt;&lt;input /&gt; rather than &lt;label /&gt;&lt;input /&gt;&lt;div class="description" /&gt;

Edit: The solution proposed by Anil Sagar works, but introduces a bug. Indeed, what I use his solution, it prevents me from giving a description to a checkbox field. In other words, if I write

$form['myCheckbox'] = array(
  '#type' =&gt; 'checkbox',
  '#title' =&gt; t('My checkbox'),
  '#description' =&gt; t("My description")
);


that description never makes it to the HTML. Does anyone know how to fix this?
You need to override theme_form_element in your theme template.php to change the order of the form field description. See below code which will change order for all fields.

If you would like to change for only one field, then add a if condition by inspecting $element array only for your field !

function yourtheme_form_element($variables) {
  $element = &amp;$variables['element'];
  // This is also used in the installer, pre-database setup.
  $t = get_t();

  // This function is invoked as theme wrapper, but the rendered form element
  // may not necessarily have been processed by form_builder().
  $element += array(
    '#title_display' =&gt; 'before',
  );

  // Add element #id for #type 'item'.
  if (isset($element['#markup']) &amp;&amp; !empty($element['#id'])) {
    $attributes['id'] = $element['#id'];
  }
  // Add element's #type and #name as class to aid with JS/CSS selectors.
  $attributes['class'] = array('form-item');
  if (!empty($element['#type'])) {
    $attributes['class'][] = 'form-type-' . strtr($element['#type'], '_', '-');
  }
  if (!empty($element['#name'])) {
    $attributes['class'][] = 'form-item-' . strtr($element['#name'], array(' ' =&gt; '-', '_' =&gt; '-', '[' =&gt; '-', ']' =&gt; ''));
  }
  // Add a class for disabled elements to facilitate cross-browser styling.
  if (!empty($element['#attributes']['disabled'])) {
    $attributes['class'][] = 'form-disabled';
  }
  $output = '&lt;div' . drupal_attributes($attributes) . '&gt;' . "\n";

  // If #title is not set, we don't display any label or required marker.
  if (!isset($element['#title'])) {
    $element['#title_display'] = 'none';
  }
  $prefix = isset($element['#field_prefix']) ? '&lt;span class="field-prefix"&gt;' . $element['#field_prefix'] . '&lt;/span&gt; ' : '';
  $suffix = isset($element['#field_suffix']) ? ' &lt;span class="field-suffix"&gt;' . $element['#field_suffix'] . '&lt;/span&gt;' : '';
   $element_description = "";
  if (!empty($element['#description'])) {
    $element_description = '&lt;div class="description"&gt;' . $element['#description'] . "&lt;/div&gt;\n";
  }
  switch ($element['#title_display']) {
    case 'before':
    case 'invisible':
      $output .= ' ' . theme('form_element_label', $variables);
      $output .= $element_description;
      $output .= ' ' . $prefix . $element['#children'] . $suffix . "\n";
      break;

    case 'after':
      $output .= ' ' . $prefix . $element['#children'] . $suffix;
      $output .= ' ' . theme('form_element_label', $variables) . "\n";

      break;

    case 'none':
    case 'attribute':
      // Output no label and no required marker, only the children.
      $output .= $element_description;
      $output .= ' ' . $prefix . $element['#children'] . $suffix . "\n";
      break;
  }
  $output .= "&lt;/div&gt;\n";

  return $output;
}


Other way &amp; simple way to solve this problem is use jQuery to change the position. This will help you !