Если одна из форм заполнена, скрипт не должен отрабатывать
Добрый день!
Помогите пожалуйста с решение вопроса Есть сайт 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 ? 'Заполните' : '') }); }); |
Часовой пояс GMT +3, время: 01:15. |