Я включил новую скрытую структуру reCAPTCHA (v2), которая по умолчанию проверяет пользователя с событием click
кнопки отправки. Но это событие запускается до проверки встроенной формы HTML5. Я ищу способ сделать это в ожидаемом порядке: сначала выполните валидацию, а затем повторите проверку.Проверка формы HTML5 до того, как reCAPTCHA's
ответ
Вы должны сделать это программно благодаря новому методу v2 grecaptcha
: grecaptcha.execute()
, чтобы recaptcha не заменил событие нажатия кнопки по умолчанию, которое препятствовало проверке формы HTML5 по умолчанию.
Путь событие:
- Отправить нажатие кнопки событие: браузер встроенный в проверке формы
- Форма отправить событие: вызов
grecaptcha.execute()
- рекапчи обратного вызова: отправить форму
$('#form-contact').submit(function (event) {
event.preventDefault();
grecaptcha.reset();
grecaptcha.execute();
});
function formSubmit(response) {
// submit the form which now includes a g-recaptcha-response input
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://www.google.com/recaptcha/api.js"></script>
<form action="?">
<div class="g-recaptcha"
data-sitekey="your-key"
data-size="invisible"
data-callback="formSubmit">
</div>
<button type="submit">Submit</button>
</form>
Используя этот код, форма никогда не будет отправляться, поскольку она предотвращает действие по умолчанию (которое отправляется). Если вы хотите представить, вы не должны предотвращать действие из-за состояния, как мой ответ ниже, пожалуйста, проверьте его. – giovannipds
@giovannipds этот код работает на нашем веб-сайте, и он отправляет oO 'grecaptcha.execute()' отправляет его КОГДА тест формы reCAPTCHA выполнен правильно. –
@giovannipds внимательно читает документацию Google reCaptcha, обратный вызов будет вызываться, когда вызов передается только, поэтому код выше просто отлично. –
Я хотел получить то же поведение, но с помощью новой recaptcha, невидимой. После того, как смотреть на некоторый код и тестирование некоторые вещи, я попал в это:
var contact_form;
$(function() {
contact_form = $('#contact-form');
contact_form.submit(function (event) {
if (! contact_form.data('passed')) {
event.preventDefault();
grecaptcha.execute();
}
});
});
function sendContactForm(token) {
contact_form.data('passed', true);
contact_form.submit();
}
Это в основном хранит объект формы JQuery в глобальной переменной, в том числе, он использует sendContactForm
как обратный вызов, но при вызове рекапчи, он устанавливает переменную данных с именем passed
, что позволяет предотвратить ее отсутствие. Это то же самое поведение, что и recaptcha, но с этим условием.
Пожалуйста, подумайте об изменении принятого вами ответа, в котором ИМХО, это не очень хорошо. Конечно, ничего личного, просто аргументов. С наилучшими пожеланиями.
точно такой же поток –
Нет, если я хорошо помню, ваш ответ выше не использует значения валидации браузера, мой делает. Рассмотрите тестирование как перед уходом -1. Благодарю. – giovannipds
Вот мое решение, чтобы получить HTML5 проверки + Невидимый ReCaptcha:
HTML:
<form id="my-form">
<!-- Your form fields ... -->
<div class="g-recaptcha"
data-sitekey="..."
data-callback="submitMyForm"
data-size="invisible">
</div>
<button type="submit">Submit</button>
</form>
JS:
var myForm = $('my-form');
function submitMyForm() {
myForm.trigger('submit', [true]);
}
$(function() {
myForm.on('submit', function (e, skipRecaptcha) {
if(skipRecaptcha) {
return;
}
e.preventDefault();
grecaptcha.execute();
});
})
Привет получил рабочее решение здесь. Работа с невидимым Recaptcha.
jQuery(document).ready(function() {
var commentform = jQuery("#commentform");
commentform.on("click", "#submit-comment", function(e) {
if(commentform[0].checkValidity()) {
e.preventDefault();
grecaptcha.execute();
}
});
});
function submitCommentForm(data) {
document.getElementById("commentform").submit();
}
<form action="blaba.php" method="post" id="commentform" class="comment-form">
<div class="form-submit">
<div data-callback="submitCommentForm" data-sitekey="yourkey" class="g-recaptcha" data-size="invisible">
<button id="submit-comment">Leave a comment</button>
</div>
</form>
- 1. Проверка формы HTML5
- 2. Проверка формы HTML5
- 3. Проверка формы HTML5
- 4. HTML5 - проверка ввода формы
- 5. html5 проверка формы (без отправки)
- 6. Проверка формы TinyMCE и HTML5
- 7. Проверка формы HTML5 без проверки Javascript
- 8. Проверка HTML5 выполняется до пользовательской проверки
- 9. Проверка формы HTML5 требуется атрибут отправить()
- 10. Проверка формы ActiveAdmin до сохранения
- 11. HTML5 Проверка формы - настройка сообщения об ошибке
- 12. Проверка HTML5 и веб-формы ASP.net
- 13. Необходимо выполнить проверку формы HTML5 до того, как произойдет событие нажатия
- 14. Проверка формы в HTML5 не работает
- 15. HTML5 проверка
- 16. Проверка формы HTML5 для электронной почты
- 17. html5 проверка формы не работает в IE9
- 18. проверка формы с помощью simple_form и html5
- 19. Прокрутите до первой ошибки ввода формы HTML5.
- 20. html5 проверка формы, действие формы void и выполнение jQuery, когда все элементы формы html5 проверяются?
- 21. HTML5 Проверка формы блокирует пароль до 16 символов, как их изменить?
- 22. Как показать несколько recaptchas на одной странице с помощью EWZRecaptchaBundle?
- 23. Проверка формы JQuery - всплывает до определенного флажка.
- 24. Проверка формы для сохранения до выхода
- 25. Проверка формы html5 с обязательным и отключенным элементом
- 26. Проверка формы AMP для Safari
- 27. проверка формы до того, как я сделаю onclick для instert in db
- 28. html5 проверка правильного выражения
- 29. Как форсировать проверку формы до того, как мода будет закрыта
- 30. Проверка html5 и jquery ajax
вы нашли решение? –
@EstelleChvl да, тот, который принят ниже. –