Невидимая reCaptcha V2 после проверки формы с jquery не работает - PullRequest
0 голосов
/ 20 мая 2018

Я пишу страницу php с рабочей формой, где я хочу добавить невидимую recaptcha.Форма выглядит так:

<form action="#" id="contact-form">
    <div class="input-group name-email input-field">
        <input type="text" name="name" id="name" placeholder="Name" class="form-control">
    </div>
     <!-- RECAPTCHA div-->
    <div class="g-recaptcha" data-sitekey=[key] data-callback="onSubmit" data-size="invisible">
    </div>
    <input type="button" id="form-submit" class="pull-right" value="Send">
 <form>

Для проверки формы я использую это:

<script type="text/javascript">
        $(function(){
            alert("Just Before Contact Form Validate");
            $('#contact-form').validate({
                rules: {
                        name: {
                        required: true,
                        minlength: 2
                    }
                },
                messages: {
                    name: {
                        required: "What's your name?",
                        minlength: "Name min.2 chars"
                    }
                },
                submitHandler: function(form) {
                    $(form).ajaxSubmit({
                        type:"POST",
                        data: $(form).serialize(),
                        url:[Another PHP page],
          success: {[do this]
          },
          error: {[do that]
          }etc etc

Я выставил предупреждение по причине отладки;когда я загружаю страницу, я получаю это.После формы я включил два внешних js-файла для проверки:

        <!-- Contact form validation -->
    <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery.form/3.32/jquery.form.js"></script>
    <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.11.1/jquery.validate.min.js"></script>

Для обработки recaptcha, после формы и перед формой javascript с предупреждением я добавил

<script>
function onSubmit(token) {
    alert("Inside OnSubmit");
    var element=document.getElementById('contact-form');
    element.submit();
}
</script>

<script src="https://www.google.com/recaptcha/api.js" async defer></script>

<script>
    $(function() {
        $("#form-submit").on('click',function() {
        grecaptcha.execute();
        alert('g-recaptcha executed');
        return false;
        });
    });
</script>

Я положил этиоповещения тоже по причинам отладки.Когда я загружаю страницу, я получаю первое предупреждение;Об ошибках не сообщается в части консоли.Я нажимаю «Snd», даже не заполняя поля, и я получаю «g-recaptcha execute» и «inside on Submit», затем страница перезагружается без проверки входных данных.Я ожидал бы, что это остановит и отобразит ошибки, но это продолжается, и теперь мой браузер больше не в myPage.php, а в myPage.php? Name = & g-recaptcha-response = [длинная строка].Тем не менее, ошибка не отображается в консоли.Как я могу это исправить?Кто-нибудь может мне помочь, пожалуйста?Спасибо.

...