Я не очень глубоко с разработкой, поэтому немного сложно врубиться сходу.
Задача: делать форму обратной связи в модальном окне. То есть: открывается модальное окно. Там три поля (имя, почта, текст с проверкой на заполнение) и капча (которая жамкнуть галочку recaptchav2). Ну и этот текст уходит на почту и в БД сохраняется имя и почта. О чем пользователю выскакивает окошко «Спасибо, мессага отправлена»
Из инструментов есть: bootstrap 4, Formit, AjaxForm и fancybox.
Из проблем: бутстраповские окно и форма как раз то, что надо по внешности и функционалу. Но в остальном все рботает криво-косо.
Может есть какой-то простой рабочий код на эту тему или объяснение. как оно работает. Из первых трех страниц гугла на эту тему не работает ничего. В лучшем случае кнопка «Отправить» закрывает модальное окно без всякой проверки и если там все ок, то письмо доходит. При следующем открытии формы, там лежат предыдущие буквы и камменты валидатора полей. Капча не появляется вообще. (Это связка Ajax + Bootstrap).
Форма в модальном окне
Версия MODX: Все
Комментарии (7)
Для добавления комментариев вы должны авторизоваться или зарегистрироваться.
Алексей Либер 24.02.2019 20:23 #
Вот два менее замороченных решения для отсеивания спама на этом сайте:
https://modx.ru/novosti-i-stati/article/382/
https://modx.ru/novosti-i-stati/article/361/
На счет FormIt + AjaxForm. Все-таки стоит отметить их преклонный возраст. И порою да, они глючат. Не копался в причинах, но такое имеет место быть.
Тем не менее — вам никто не запрещает написать свой сниппет для отправки и написать свой код для аякса, закрытия окна и ресета формы, если не получается стандартными средствами.
Не стоит зацикливаться на стандартных компонентах MODX, можете посмотреть в сторону связки php + jQuery. Вот этого добра в инете полно. Да и про то как интегрировать все это добро в MODX тоже написано не мало.
Константин 24.02.2019 22:16 #
Про написать самому — ну приятно, что в меня верят, но я не настолько в теме =)
Павел Романов 24.02.2019 20:59 #
Например, fancybox.
Есть ссылка и скрытый блок, в котором вызов AjaxForm:
Чанк feedback_form:
Чтобы окно закрывалось, когда форма успешно отправлена, добавьте на страницу скрипт:
Что касается рекапчи, полностью согласен с Алексеем.
Вот это его решение особенно понравилось ))
Константин 24.02.2019 22:33 #
Второй момент, который смущает сообщение при перезагрузке страницы:
The page that you're looking for used information that you entered. Returning to that page might cause any action that you took to be repeated. Do you want to continue?
(Инфа которую забил в поля формы, остается в полях формы при следующем открытии.)
Попробую завтра все еще раз с чистого листа. Но вроде и на этом этапе лист вполне чистый.
Павел Романов 24.02.2019 23:13 #
А по ошибкам смотрите консоль браузера — там скорее всего много интересного ))
Максим Литвинов 25.02.2019 09:33 #
Константин 25.02.2019 10:32 #
Фэнси бокс открыл нормально мне форму один раз, потом просто стал выдавать ошибку. Даже если там все оставить по дефолту и написать три буквы вместо формы.
Как я понял, основной трабл, что при нажатии кнопки форма закрывается, что бы в ней ни было. Если там все ок, то есть шанс получить письмо.
Возможно бодаются какие-то скрипты? Такое может быть? Но скриптов у меня минимум.
Консоль ругается на document.write из аякса.
Попробую с чистого листа еще раз. Может заработает. Может идеи появятся.