|
59 / 25 / 10
Регистрация: 01.07.2016
Сообщений: 153
|
||||||
ReCAPTCHA во всплывающем окне27.07.2018, 02:33. Показов 7502. Ответов 13
Метки нет (Все метки)
Всем привет.
Только начал изучать JS. У меня на странице есть форма, работа которой должна происходить следующим образом... 1. Пользователь вводит данные полей формы, нажимает кнопку "Отправить", появляется всплывающее модальное окно, содержащее только гугловскую капчу и кнопку "Подтвердить". Пользователь вводит эту капчу, нажимает кнопку "Подтвердить", и форма отправляется обычным ПОСТ-запросом с перезагрузкой страницы. 2. Если данные полей формы введены некорректно, то при нажатии на кнопку "Отправить", это должно быть проверено браузером (не скриптом), и модальное окно с капчей не должно появляться. 3. Если во всплывающем окне капча не введена, то при нажатии на кнопку "Подтвердить" форма не должна отправляться. 4. Капча должна загружаться (создаваться) не сразу после загрузки страницы, а только после появления всплывающего окна. Потому что на странице много таких всплывающих окон с капчами, и если делать это сразу, то сайт грузится долго. Вот мой код: Кликните здесь для просмотра всего текста
В этом коде пока ещё не реализована проверка капчи на стороне клиента и не реализована отправка формы. То есть, по моему мнению, с таким кодом форма вообще не должна отправляться. Но у браузеров почему-то другое мнение, и они эту форму как-то отправляют. Вот песочница с этим кодом: https://jsfiddle.net/index58/xyv0L2a9/ Причём, форма отправляется не только при нажатии на кнопку "Подтвердить", но и при нажатии на кнопку "Отправить", если закрыть всплывающее окно. На реальном сайте, где ключ соответствует домену, и капча загружается без ошибок, ситуация точно такая же. Вопрос: Почему и каким образом браузер отправляет форму, если ему пишут: onsubmit="show_popup('captcha1'); return false" ?
0
|
||||||
| 27.07.2018, 02:33 | |
|
Ответы с готовыми решениями:
13
Картинка в всплывающем окне Страница в всплывающем окне |
|
21 / 44 / 11
Регистрация: 08.02.2018
Сообщений: 443
|
|
| 27.07.2018, 09:13 | |
|
0
|
|
|
59 / 25 / 10
Регистрация: 01.07.2016
Сообщений: 153
|
|||
| 27.07.2018, 12:17 [ТС] | |||
|
0
|
|||
|
21 / 44 / 11
Регистрация: 08.02.2018
Сообщений: 443
|
||
| 27.07.2018, 16:11 | ||
|
2. Если есть форма
так что пишет протокол HTTP когда не отправляется???POST это метод протокола HTTP.
0
|
||
|
59 / 25 / 10
Регистрация: 01.07.2016
Сообщений: 153
|
|||
| 27.07.2018, 17:26 [ТС] | |||
Подскажешь?
0
|
|||
|
Модератор
2379 / 1739 / 677
Регистрация: 07.08.2016
Сообщений: 4,091
|
|
| 27.07.2018, 18:06 | |
|
index58, В качестве костыля можно добавить слушателя события сабмит на форму, в нем отменять отправку и запускать функцию
show_popup('captcha1'). Плюс отслеживать нажатие на кнопку "Подтвердить" во всплывающем окне и при клике на нее вызывать у формы метод submit()
0
|
|
|
59 / 25 / 10
Регистрация: 01.07.2016
Сообщений: 153
|
||
| 27.07.2018, 19:58 [ТС] | ||
|
Но как сделать так, чтобы сначала отменялась отправка, а только потом запускалась функция show_popup('captcha1')? Можете пример привести?
0
|
||
|
Модератор
2379 / 1739 / 677
Регистрация: 07.08.2016
Сообщений: 4,091
|
|||||||
| 27.07.2018, 21:08 | |||||||
1
|
|||||||
|
2598 / 1502 / 689
Регистрация: 23.08.2015
Сообщений: 3,804
|
|
| 27.07.2018, 23:31 | |
Сообщение было отмечено index58 как решение
Решение
index58, Второй раз происходит отправка из-за ошибки скрипта. "reCAPTCHA has already been rendered in this element". Т.е. скрипт до return false просто не доходит. Конечно ошибок в принципе не должно быть, но чтоб такое исключить лучше сначала отменять отправку формы, а потом уже выполнять код, как было предложено выше.
Почитайте документацию по recaptcha. Вам нужно обновлять каптчу при открытии всплывающего окна. Я уже не помню, как это делается)
1
|
|
|
59 / 25 / 10
Регистрация: 01.07.2016
Сообщений: 153
|
|||||||
| 28.07.2018, 01:12 [ТС] | |||||||
|
Действительно странно, что метод grecaptcha.render() вызывает ошибку. Понятное дело, что капча должна создаваться один раз, но зачем же ставить разработчиков в такое неудобное положение))) AlexZaw, спасибо за пример. Я подумаю, но пока сделаю всё-таки по-своему) Вот окончательный код, работающий у меня корректно: Кликните здесь для просмотра всего текста
Вот соответствующая песочница: https://jsfiddle.net/index58/u1zr54tk/ Вопрос решён, всем спасибо.
0
|
|||||||
|
Модератор
2379 / 1739 / 677
Регистрация: 07.08.2016
Сообщений: 4,091
|
||
| 28.07.2018, 01:56 | ||
|
0
|
||
|
2598 / 1502 / 689
Регистрация: 23.08.2015
Сообщений: 3,804
|
|
| 28.07.2018, 03:11 | |
|
AlexZaw, Это потому что проверка каптчи не проходит)
0
|
|
|
2037 / 1096 / 409
Регистрация: 29.04.2016
Сообщений: 2,625
|
|
| 28.07.2018, 05:17 | |
|
0
|
|
|
Модератор
2379 / 1739 / 677
Регистрация: 07.08.2016
Сообщений: 4,091
|
|
| 28.07.2018, 08:02 | |
|
sad67man, zlojnaxa, Ну в первом примере форма пыталась отправиться и с непроверенной капчей.
Я с ней не работал, поэтому и немного поерничал Уже посмотрел что в коде теперь происходит проверка капчи на стороне клиента.
0
|
|
| 28.07.2018, 08:02 | |
|
Помогаю со студенческими работами здесь
14
Открытие поста во всплывающем окне Не удается скрыть адресную строку во всплывающем окне Показ подсказки во всплывающем окне - в трех браузерах по-разному! Полоса в всплывающем окне Галерея во всплывающем окне Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|