Показать сообщение отдельно
  #82 (permalink)  
Старый 03.08.2017, 10:17
Аспирант
Отправить личное сообщение для ФедорН Посмотреть профиль Найти все сообщения от ФедорН
 
Регистрация: 19.06.2017
Сообщений: 40

laimas, разобрался. спасибо. нет, в моем случае так не пойдет, т.к. в футере есть fixed button, которая сразу предлагает сделать расчет, переходит в область на странице, где калькулятор. Конечно, можно было прикрутить к той кнопке сразу и добавление строки при переходе, но пользователь может дойти и сам до этого места, получится не очень удобно - пусть останется как есть.

Я третий день пытаюсь прикрутить к форме google reCaptcha. Возможно, с принципом подключения вы знакомы.
Хочу ее добавить не по событию открытия формы заказа, а по событию отправки -непосредственно, когда пользователь заполнил форму и нажимает "отправить". Мне кажется, в моем случае, это правильнее?
Встроил ее в скрипт валидации обязательных полей формы, в последней версии, к которой я пришел, капча работает, валидация - нет. Т.е. можно вообще отправить абсолютно пустую форму, она без проблем уходит.

Изначально код валидации выглядел так:

jQuery(document).ready(function($) {
        $('.callback-form-container').submit(function() {
            var formInputs = $(this).find('.validate');
            var errors = '';
            $(formInputs).each(function() {
                if($.trim(this.value) == '') {
                    fieldLabel = $(this).parent().find('span.label-text').html();
                    errors += '- ' + fieldLabel + '\n';
                }
            });
            if(errors.length > 0) {
                alert('Пожалуйста, заполните следующие поля:\n\n' + errors);
                return false;
            }
            else
            {
                $('.submit-button').val('Пожалуйста, пододжите...');
                $('.submit-button').attr('disabled', 'disabled');
                return true             
            }           
            });         
        }); 
});


то, что получилось у меня:

jQuery(document).ready(function($) {
    var form=$('.callback-form-container');
    form.submit(function() {
        var formInputs = $(this).find('.validate');
        var errors = '';
        $(formInputs).each(function() {
            if($.trim(this.value) == '') {
                fieldLabel = $(this).parent().find('span.label-text').html();
                errors += '- ' + fieldLabel + '\n';
            }
        });
        $.ajax({
           type: "POST",
           url: "/Captcha.php",
           data: form.serialize(),
           dataType: "json", 
           error: function(){
              alert("Ошибка сервера. Проверьте интернет-соединение");
          },
           success:function(result){
             if(errors.length > 0) {
                alert('Пожалуйста, заполните следующие поля:\n\n' + errors);
             }else{
                $('.submit-button').val('Пожалуйста, пододжите...');
                $('.submit-button').attr('disabled', 'disabled');
                 
             }
           }     
        });
    }); 
});


captcha.php

<?php
if(isset($_POST['g-recaptcha-response'])) {
    $result = json_decode(file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=6Le(секретный код)7O&response=$_POST["g-recaptcha-response"]&remoteip=$_SERVER["REMOTE_ADDR"]'), TRUE);

    if($result['success'] == 1) {
        console.log("Ok");

    } else {
        grecaptcha.reset();
    }
}
?>

Последний раз редактировалось ФедорН, 03.08.2017 в 10:21.
Ответить с цитированием