Категория:
Опубликовано:
Как очистить форму отправленную AJAX'ом
Очень просто. ))
Ниже, построим форму, назначим ей отправку AJAX'ом и очистим все поля после сабмита.
Альтернативный способ, с использованием AJAX-commands.
Строим форму:
/**
* My sample form
*/
function mymodule_form($form, &$form_state) {
$form['#clean_id'] = drupal_clean_css_identifier(__FUNCTION__) . '-wrapper';
$form['#prefix'] = '<div id="' . $form['#clean_id'] . '">';
$form['#suffix'] = '</div>';
$form['name'] = array(
'#type' => 'textfield',
'#title' => t('Name'),
'#required' => TRUE,
'#attributes' => array(
'placeholder' => t('Your name'),
),
);
$form['actions'] = array(
'#type' => 'actions',
);
$form['actions']['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
'#ajax' => array(
'callback' => 'mymodule_form_ajax_callback',
'wrapper' => $form['#clean_id'],
'event' => 'click',
),
);
return $form;
}
В AJAX-коллбеке реализуем следующую конструкцию:
/**
* My sample form callback.
*/
function mymodule_form_ajax_callback($form, $form_state) {
if (form_get_errors()) {
// Возвращаем при наличии ошибок
return $form;
}
else {
// Выводим сообщеньку, если нужно
drupal_set_message(t('Thank You!'));
// Смотрим кеш чистой формы
$form = form_get_cache($form_state['input']['form_build_id'], $form_state);
// Сбрасываем заполненные значения
$form_state['input'] = array();
// Грузим и возвращаем форму
return form_builder($form['#form_id'], $form, $form_state);
}
}
После отправки, форма будет очищена.
Делитесь полезными материалами в социальных сетях.