Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Открыть страницу обработки формы в модальном окне (https://javascript.ru/forum/events/73968-otkryt-stranicu-obrabotki-formy-v-modalnom-okne.html)

Jimmi 01.06.2018 11:25

Открыть страницу обработки формы в модальном окне
 
Как открыть страницу обработки формы (находящуюся в значении action) в модальном окне?

С помощью формы пользователь делает выборку определенных услуг. Нажимает на кнопку "Отправить" и отправляется на страницу /action.php, где и видит результат выборки. Так вот нужно, чтобы результат появлялся без перезагрузки, в модальном окне, а не на внешней странице.

ksa 01.06.2018 11:44

Цитата:

Сообщение от Jimmi
в модальном окне?

Что ты понимаешь под "модальным окном"?

Поскольку клиентский скрипт может использовать ограниченный набор модальных окон. Такие как:
alert('Test');
confirm('Test');
prompt('Test');

Jimmi 01.06.2018 12:05

Цитата:

Сообщение от ksa (Сообщение 486481)
Что ты понимаешь под "модальным окном"?

Поскольку клиентский скрипт может использовать ограниченный набор модальных окон. Такие как:
alert('Test');
confirm('Test');
prompt('Test');

Под модальным окном я подразумеваю медленно всплывающую область, с возможным затемнением заднего фона. Но это не обязательно.

laimas 01.06.2018 13:02

ksa,
есть два модальных окна, которые могут гораздо большее, но как всегда - поддержка только IE.

ksa 01.06.2018 13:28

Цитата:

Сообщение от laimas
но как всегда - поддержка только IE

Потому я про них и не писал... :haha:

ksa 01.06.2018 13:32

Цитата:

Сообщение от Jimmi
Под модальным окном я подразумеваю медленно всплывающую область, с возможным затемнением заднего фона. Но это не обязательно.

Ты описываешь некую комбинацию тех же ДИВов...

Иными словами тебе нужно прочитать некий контент в ДИВ.
Тут может помочь такой метод
https://jquery-docs.ru/load/

Т.е. ты читаешь action у формы, формируешь УРЛ из данных формы. И вызываешь правильно этот метод.
Сервер читает данные, формирует контент, который потом отобразится в указанном ДИВе.

Jimmi 05.06.2018 14:06

Цитата:

Сообщение от ksa (Сообщение 486490)
Ты описываешь некую комбинацию тех же ДИВов...

Иными словами тебе нужно прочитать некий контент в ДИВ.
Тут может помочь такой метод
https://jquery-docs.ru/load/

Т.е. ты читаешь action у формы, формируешь УРЛ из данных формы. И вызываешь правильно этот метод.
Сервер читает данные, формирует контент, который потом отобразится в указанном ДИВе.

Модальное окнo есть, но оно реагирует на тег <a href> (пример прилагаю)
. Теперь нужно его как-то научить реагировать на input или form
<div id="modal_form5">
         <span id="modal_close5">x</span>
         Содержимое модального окна
      </div>
      <div id="overlay5"></div>
      <script type="text/javascript">
         $(document).ready(function() { // вся магия после загрузки страницы
         	$('a#go5').click( function(event){ // ловим клик по ссылки с id="go"
         		event.preventDefault(); // выключаем стандартную роль элемента
         		$('#overlay5').fadeIn(300, // сначала плавно показываем темную подложку
         			function(){ // после выполнения предъидущей анимации
         				$('#modal_form5') 
         					.css('display', 'block') // убираем у модального окна display: none;
         					.animate({opacity: 1, top: '50%'}, 200); // плавно прибавляем прозрачность одновременно со съезжанием вниз
         		});
         	});
         	/* Закрытие модального окна, тут делаем то же самое но в обратном порядке */
         	$('#modal_close5, #overlay5').click( function(){ // ловим клик по крестику или подложке
         		$('#modal_form5')
         			.animate({opacity: 0, top: '35%'}, 200,  // плавно меняем прозрачность на 0 и одновременно двигаем окно вверх
         				function(){ // после анимации
         					$(this).css('display', 'none'); // делаем ему display: none;
         					$('#overlay5').fadeOut(300); // скрываем подложку
         				}
         			);
         	});
         });
      </script>

Manyasha 08.06.2018 15:07

Jimmi,
попробуйте заменить 8-ю строчку на
$('form').submit( function(event){


Часовой пояс GMT +3, время: 04:10.