How can I disable a form's default validation functions? I have created my own validate handler:

/**
 * Validate handler.
 */
function my_module_validate($form, &amp;$form_state) {
  $values = $form_state['values'];
  if ($values['type'] == 'line') {
    form_set_error('type', t('MY VALIDATION.'));
  }
}


which is called from a button element:

'preview' =&gt; array(
  '#type' =&gt; 'button',
  '#value' =&gt; t('Preview'),
  '#validate' =&gt; array('my_module_validate'),
  '#weight' =&gt; 8,
),


which produces this result on submission of an empty form:



The only validation function that I want to run is my own, from my own handler - the last error message - yet all the default validation functions run as well. How do I disable these?

Thanks.



UPDATE:

The solution provided by @superdrupal looks 'correct', but I cannot get it to work. Here's my code:

'map' =&gt; array(
  '#type' =&gt; 'select',
  '#title' =&gt; t('Map'),
  '#required' =&gt; TRUE,
  '#options' =&gt; array(
    'map1' =&gt; t('Map 1'),
    'map2' =&gt; t('Map 2'),
  ),
  '#element_validate' =&gt; array('my_module_map_validate'),
),


...

// Buttons/link.
'preview' =&gt; array(
  '#type' =&gt; 'button',
  '#value' =&gt; t('Preview'),
  '#limit_validation_errors' =&gt; array(array('map')),
),


...

/**
 * Map validate handler.
 */
function my_module_map_validate($element, &amp;$form_state, $form) {
  drupal_set_message('Hello world!');
  if (empty($element['#value'])) {
    form_error($element, t('xyz'));
  }
}


which, rather than throwing the error: 'xyz' on submussion of an empty form, produces this result:
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(),
),