How can I disable a form's default validation functions?
As per function form_set_error: "If #limit_validation_errors is set on a clicked button, the button must also define a #submit property (may be set to an empty array)." So your preview button should be:

'preview' =&gt; array(
  '#type' =&gt; 'button',
  '#value' =&gt; t('Preview'),
  '#limit_validation_errors' =&gt; array(array('map')),
  '#submit' =&gt; array(),
),