#jquery #drupal
#jquery #drupal
Вопрос:
Я разрабатываю веб-приложение с использованием Drupal. Моя форма содержит две кнопки: «Отправить» и «Очистить». Если при нажатии кнопки «Очистить» я хочу пропустить все проверки, включая проверку требуемого поля. Есть ли какой-нибудь способ добиться этого?
Ответ №1:
Когда мне нужна кнопка сброса формы, это то, что я делаю.
В коде вашей формы (или form_alter) добавьте следующее:
`$form['clear'] = array(
'#name' => 'reset',
'#type' => 'submit',
'#value' => t('Reset'),
'#id' => 'edit-reset-button',
'#validate' => array('form_clear'),
);`
Добавьте функцию очистки (использует простой сброс настроек и перенаправление):
`function form_clear($form, amp;$form_state) {
$form_state['rebuild'] = TRUE;
unset($form_state['values']);
drupal_goto($form['#action']);
}`
Ответ №2:
Есть способ выполнить то, что вы пытаетесь сделать, но он работает только с Drupal 7: когда вы определяете поле формы «Очистить», добавьте следующую строку.
'#limit_validation_errors' => array()
Документация для этого свойства описывает его как:
Предоставляет массив разделов, части
$form_state['values']
которых должны быть проверены, подразумевая, что разделы, которых нет в списке, не должны проверяться. Это обычно используется в многоступенчатых формах, например, в случае кнопки «назад», где'#limit_validation_errors' => array()
это означало бы ничего не проверять, поскольку значения формы на текущей странице в любом случае должны быть отброшены.
Пример, приведенный в документации, касается кнопки «Назад», но то же самое относится и к кнопке «Очистить» в вашем случае, поскольку все введенные значения отбрасываются, и нет смысла сообщать об ошибках для значений, которые не используются.
Drupal 6 не использует это свойство поля формы.
Невозможно избежать проверки значений, особенно если есть значения, помеченные как обязательные. Вы не смогли пометить, что эти значения являются обязательными, и сделать так, чтобы поля формы включали красную звездочку (это способ Drupal отмечать требуемые значения), но затем вы должны написать обработчик проверки для другой кнопки, который проверял бы, введены ли требуемые значения.
Комментарии:
1. @kiamlaluno… что ты говоришь correct.in drupal 7 это возможно. но я нашел решение и для drupal6 ..см. this..drupalmodules.com/module/skip-required-validation
2. На странице проекта этого модуля написано: «Этот модуль не поддерживается. Использовать drupal.org/project/skip_validation вместо этого.»