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();
}
}
?>