Если одна из форм заполнена, скрипт не должен отрабатывать
Добрый день!
Помогите пожалуйста с решение вопроса Есть сайт www.mypravo.kz На нем есть три формы, скриншоты с формами https://drive.google.com/open?id=0Bw...zN4aXNicVNkNDg https://drive.google.com/open?id=0Bw...nI0RTJ6bldicVE есть скрипт вызова модального диалога, когда человек выходит с сайта, он подключен отдельным файлом config.js, работает от плагина arcticmodal Код файла config.js
$(document).ready(function () {
if (!$.cookie('smartCookies')) {
$(document).mouseleave(function (e) {
function getWindow() {
$('.offer').arcticmodal({
closeOnOverlayClick: true,
closeOnEsc: true
});
};
setTimeout(getWindow, 1);
$.cookie('smartCookies', true, {
expires: 7,
path: '/'
});
});
};
});
Код разметки формы
<div class="modalInner">
<section class="offer">
<form method="post" action="rrr.html" class="fff">
<div class="form-group form-inline">
<input type="checkbox" name="fo_1">Не хватило информации об услуге
<input type="text" class="form-control" name="fo_1_1" placeholder="Какой информации?">
</div>
<div class="form-group form-inline">
<input type="checkbox" name="fo_2">Не хватило информации о компании
<input type="text" class="form-control" name="fo_2_2" placeholder="Какой информации?">
</div>
<div class="form-group form-inline">
<input type="checkbox" name="fo_3">Не нашел(-шла) услугу, которую искал(-а)
<input type="text" class="form-control" name="fo_3_3" placeholder="Какую услугу?">
</div>
<div class="form-group form-inline">
<input type="checkbox" name="fo_4">Компания не вызывает доверия
</div>
<div class="form-group form-inline">
<input type="checkbox" name="fo_5">Не нужнаюсь в услуге сейчас, просто ищу информацию
</div>
<div class="form-group form-inline">
<input type="checkbox" name="fo_6">Не могу с вами связаться
</div>
<div class="form-group form-inline">
<input type="checkbox" name="fo_7">Выбрал другую компанию, потому что
<input type="text" class="form-control" name="fo_7_7" placeholder="Почему?">
</div>
<div class="form-group form-inline">
<input type="checkbox" name="fo_8">Уже позвонил
</div>
<div class="form-group form-inline">
<input type="checkbox" name="fo_9">Заходил(-ла) не в первый раз, просто уточнить информацию
</div>
<div class="form-group form-inline">
<input type="checkbox" name="fo_10">Личный комментарий
<input type="text" class="form-control" name="fo_10_10" placeholder="Ваше мнение">
</div>
<div class="form-group form-inline">
Введите Ваш email<input type="email" class="form-control" name="email_fo" required placeholder="Ведите ваш email">
</div>
<button type="submit" class="button_popup">Отправить</button>
</form>
</section>
</div>
Возможно ли сделать так что, при отправке какой либо из трех форм показанных на скриншотах, модальный диалог не показывался пользователю Спасибо! |
Так и надо было сразу вопрос ставить, а то кнопки, щелчки... ничего не понять, что надо. )
В ранее показанном коде обработчика отправки формы добавить это:
$.cookie('smartCookies', true, {
expires: 7,
path: '/'
});
|
Цитата:
$(document).ready(function () {
$(document).mouseleave(function (e) {
function getWindow() {
$('.offer').arcticmodal({
closeOnOverlayClick: true,
closeOnEsc: true
});
};
!!!!! setTimeout(getWindow, 1);
$.cookie('smartCookies', true, {
expires: 7,
path: '/'
}); !!!!!!
});
};
});
|
Цитата:
|
$(function() {
$('form').submit(function() {
if(!$(this).find('input:checked').length) {
alert('Выберите один из вариантов');
return false
}
}).find('input:checkbox').change(function() {
$(this).closest('.input-group-addon').find('input:text').prop('required', this.checked).attr('placeholder', this.checked ? 'Заполните' : '')
});
$.cookie('smartCookies', true, {
expires: 7,
path: '/'
});
});
Вот так? |
Цитата:
Цитата:
$('form').submit(function() { //это событие при отправлении формы
if(!$(this).find('input:checked').length) {
alert('Выберите один из вариантов');
return false
}
//и гарантированно, что форма отправлена, это здесь
$.cookie('smartCookies', true, {
expires: 7,
path: '/'
});
}).find('input:checkbox').change(function()
|
Цитата:
Форма отправляется post методом через кнопку, в другой в файл-обработчик, а от него идет перенаправление на страницу с благодарностью. Нужно как-то отловить людей,которые отправили формы со скриншотов и не показывать им модальный диалог за который отвечает этот код
$(document).ready(function () {
if (!$.cookie('smartCookies')) {
$(document).mouseleave(function (e) {
function getWindow() {
$('.offer').arcticmodal({
closeOnOverlayClick: true,
closeOnEsc: true
});
};
setTimeout(getWindow, 1);
$.cookie('smartCookies', true, {
expires: 7,
path: '/'
});
});
};
});
|
Вы запускали предложенное? Последняя попытка пояснения, далее думайте сами.
if (!$.cookie('smartCookies')) { - если у клиента не установлена кука, то $(document).mouseleave(function (e) { - по уходу с клиентской области показать окно и установить куку, то есть после этого окно уже не будет показываться. Чтобы оно не показывалось и после отправления любой из форм, эту куку нужно установить и при отправлению формы. Как это сделать и было показано. Вопрос который может возникнуть здесь, так это о времени действия куки, но это вопрос ни столько самого кода, а логики вашего приложения, и насколько "прикукить" клиента решать не мне, а вам. Что еще нужно? |
laimas прошу прощения, что я такой тугодум
Я просто не могу понять правильно ли написан код( Цитата:
|
Вопрос - что выполняется этим обработчиком:
.find('input:checkbox').change(function() отправление формы или же изменения состояния флажков? Ну ежику же понятно, что изменение состояние флажков. Спрашивалось "при отправке какой либо из трех форм" запретить показ окна. А обрабатывается отправка формы здесь: $('form').submit(function(), и уже было показано, что в этот обработчик и поместить (добавить) запись куки. Чего вы его лепите не туда куда следует, вообще за пределы этих обработчиков? Что $(document).ready(function (), что $(function(), это одно и тоже, а значит перенесите все в одно место, пусть так:
$(document).ready(function () {
if (!$.cookie('smartCookies')) {
$(document).mouseleave(function (e) {
function getWindow() {
$('.offer').arcticmodal({
closeOnOverlayClick: true,
closeOnEsc: true
});
};
setTimeout(getWindow, 1);
$.cookie('smartCookies', true, {
expires: 7,
path: '/'
});
});
}
$('form').submit(function() {
if(!$(this).find('input:checked').length) {
alert('Выберите один из вариантов');
return false
}
$.cookie('smartCookies', true, {
expires: 7,
path: '/'
});
}).find('input:checkbox').change(function() {
$(this).closest('.input-group-addon').find('input:text').prop('required', this.checked).attr('placeholder', this.checked ? 'Заполните' : '')
});
});
|
laimas, спасибо, до меня дошло, как это все работает
Цитата:
|
На будущее - не надо цитировать все, зачем засорять форум портянками.
|
| Часовой пояс GMT +3, время: 08:56. |