Сообщение при переключении на следующий шаг в многошаговой форме

Главные вкладки

Аватар пользователя g2100636 g2100636 29 сентября 2013 в 11:39

Пожалуйста помогите сделать такую штуку:
при переключением между шагом в многошаговой форме (вот как тут) (а у меня всего два шага),
после первого шага нужно сделать какбы задержку в секунд 10-15, и в идеале всплывающее окно "пожалуйста подождите, идет обработка информации ...", ну или не всплывающее, а просто снизу формы такое сообщение с гифкой-прогрессбаром..

както джава-скриптом может быть.. но вот как, и куда его пихать?

Комментарии

Аватар пользователя heron77 heron77 23 августа 2019 в 13:26

6RUN0 wrote:
Тут всё это есть

Нет там этого. Вот здесь есть: FormAPI

У меня немного проще получилось, чем в приведенном на орге примере. В мультистепе-то уже стоит вызов аякса. Вот его и дописываем.

<?php
    $form
['actions']['next'] = array(
      
'#type' => 'submit',.
      
'#value' => 'Далее...',.
      
// На кнопку вешаем ajax-обработчик, который будет возвращать форму
      // в ранее созданный <div id="meter-reading-form-wrapper"></div>
      
'#ajax' => array(
        
'wrapper' => 'meter-reading-form-wrapper',.
        
'callback' => 'meter_reading_ajax_callback',
        
'progress' => array(
           
'type' => 'throbber',
           
'message' => t("Подождите. Поиск номера лицевого счета в базе данных"),
        ),
        
'effect' => 'none',
      ),
    );
?>
Аватар пользователя heron77 heron77 23 августа 2019 в 18:31

В стандартном решении фраза "Подождите" не описывает полностью суть происходящих процессов и пользователю может быть не понятно, а чего это он так долго ждет. В моем случае при переходе между шагами именно происходит процесс обмена информацией со сторонним сервером и иногда может занимать длительное время. Кроме того это было требование заказчиков. Да и топикстратер как раз спрашивал о том, как вмешаться в процесс информирования. Я полностью корректно и на 100% ответил на вопрос. Мне самому было нужно. Искал здесь на сайте готовый рецепт, но пришлось лезть на org для самостоятельного изучения.
А вы с какой целью интересуетесь? Хотите рекомендовать нам не сметь трогать стандартное поведение?

Аватар пользователя Mnilionic Mnilionic 23 августа 2019 в 21:15

Сообщение, как я вижу, вы сделали нужное стандартным способом в конструкторе формы. Поэтому и стало любопытно "а что вы ещё дописываете". И я не обратил внимание, что оригинальный вопрос из 2013 года.

Аватар пользователя heron77 heron77 24 августа 2019 в 21:57

Вы немного не поняли по контексту. На орге все нормально написано и даже более, чем... Но там именно просто про FormAPI (что логично). Просто топикстартер задавал свой вопрос конкретно применительно к ситуации с мультистепом. А в ситуации с мультистепом уже используется #ajax. И я привел пример того, как я настроил эту конструкцию и она получилась немного проще, чем в полном описании на орге.

А то, что вопрос был задан в 2013 году, так это не страшно. Это моя привычка (заставляю себя, если честно). Если нахожу вопрос по теме, которая меня интересует и на этот вопрос не было адекватного ответа, а я позже смог найти для себя решение, то вбиваю свое решение все равно. Вдруг, кому-то пригодится. Ведь мне уже много советов пригодилось с этого сайта. Пусть и от меня маленькая будет, но польза.

Аватар пользователя Mnilionic Mnilionic 25 августа 2019 в 0:23

Скорее всего я не допонял ваш ответ.
Так как, на мой взгляд, добавление #ajax к кнопке сабмита, любую форму делает мультистеповой до тех пор пока ваш колбек возвращает форму или часть формы.
Сообщение задаётся в конструкторе.
А отображение попапом - это пара строчек стилей к блоку с крутилкой и сообщением, которые вынимают блок из потока и растягивают его поверх формы... Крутилка, кстати, тоже стилями заменяется на любую гифку или свегешку.