Существует способ выполнить то, что вы пытаетесь сделать, но он работает только с Drupal 7. Когда вы определяете поле формы «Очистить», добавьте следующую строку.
'#limit_validation_errors' => array()
Документация для этого свойства описывает его как:
Предоставляет массив разделов, которые являются частями $form_state['values']
, которые должны быть проверены, подразумевая, что разделы, которые не перечислены, не должны проверяться. Это обычно используется в многошаговых формах в случае кнопки «назад», например, где '#limit_validation_errors' => array()
будет означать не подтверждать что-либо, так как значения формы на текущей странице все равно должны быть отброшены.
Пример из документации касается кнопки «Назад», но то же самое относится и к кнопке «Очистить» в вашем случае, так как все введенные значения отбрасываются, и это не имеет смысл сообщать об ошибках для значений, которые не используются.
Drupal 6 не использует это свойство поля формы.
Нет способа избежать проверки значений, особенно если есть значения, помеченные как обязательные. Вы не могли пометить эти значения как обязательные, и визуализация полей формы включала красную звездочку (это способ помечать обязательные значения в Drupal), но затем вы должны написать обработчик проверки для другой кнопки, который проверял бы, что требуемые значения поступил.