Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Автоматическое закрытие окна FancyBox (https://javascript.ru/forum/jquery/79019-avtomaticheskoe-zakrytie-okna-fancybox.html)

laimas 07.12.2019 19:46

Цитата:

Сообщение от maxg5
Применил Ваш код к своему сайту.

Один в один не надо, это пример, а у вас должны быть все обработчики - ошибок запроса и прочее, к тому же не мешало бы на время запроса делать недоступной кнопку submit.

Цитата:

Сообщение от maxg5
при нажатии на кнопку Отправить окно закрывается и все.

Ну все правильно, в success что делается? А вот что:

$('pre').text(d); //ответ помещаем в ...
f.closest('.fancybox-skin').find('a').trigger('click') //закрываем окно

Кстати, можно закрыть и так $.fancybox.close(), никаких других открытий одновременно у вас не видно.

А судя по ответу, сервер не дурак, что хорошо, проверяет данные пришедшие, и если обязательно поле пустое, то возвращает сообщение. Вот только плохо, что это обычный текст, так что не понять, то-ли были ошибки приема, то-ли все Ок. Для диалога удобнее json-формат, вот тогда закрывать окно нужно только если север не вернул ошибок.

maxg5 07.12.2019 19:54

Получается мне нужно обработчики дописать? Это в php писать как я понимаю?
По итогу получается нужно мой PHP подправить под Ваш код?

laimas 07.12.2019 20:04

Прервали меня, отправил автоматом, но не все.

Если нужно чтобы и по отправлению и первой формы (та что в окне), после отправки вывести сообщение об успешной ее приемке, а потом закрыть окно спустя время, то нужно не новое окно открывать, а использовать это же, заменив его контент (форму) на сообщение. Ну и закрыть по таймеру.

Цитата:

Сообщение от maxg5
Получается мне нужно обработчики дописать? Это в php писать как я понимаю?

Не только обработчик, но и серверный код, он должен возвращать json, например, если в нем будет свойcтво error, то вывести это сообщение. Куда вывести, это уже дело хозяйское, можно в форму добавить скрытый элемент, в который помещать ошибку и показывать его, можно детализировать какие конкретно поля не заполнены и показывать всплывающие сообщения возле них, и т.д., и т.п.

А вообще, добавьте обязательным полям атрибут required и все браузеры поддерживающие его не позволят отправлять форму с незаполненными такими полями. А те что не поддерживают получат ошибку от сервера.

В общем нужно не просто жмахнул и отправил форму, а писать диалог клиент-сервер.


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