11.06.2017, 18:26
|
Аспирант
|
|
Регистрация: 07.06.2017
Сообщений: 47
|
|
Если одна из форм заполнена, скрипт не должен отрабатывать
Добрый день!
Помогите пожалуйста с решение вопроса
Есть сайт 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>
Возможно ли сделать так что, при отправке какой либо из трех форм показанных на скриншотах, модальный диалог не показывался пользователю
Спасибо!
|
|
11.06.2017, 18:53
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Так и надо было сразу вопрос ставить, а то кнопки, щелчки... ничего не понять, что надо. )
В ранее показанном коде обработчика отправки формы добавить это:
$.cookie('smartCookies', true, {
expires: 7,
path: '/'
});
|
|
11.06.2017, 20:00
|
Аспирант
|
|
Регистрация: 07.06.2017
Сообщений: 47
|
|
Сообщение от laimas
|
Так и надо было сразу вопрос ставить, а то кнопки, щелчки... ничего не понять, что надо. )
В ранее показанном коде обработчика отправки формы добавить это:
$.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: '/'
}); !!!!!!
});
};
});
Последний раз редактировалось SkyRewir, 11.06.2017 в 20:09.
|
|
11.06.2017, 20:18
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от SkyRewir
|
Этот кусок кода вроде бы есть
|
Этот код к отправке формы отношения не имеет.
|
|
11.06.2017, 20:55
|
Аспирант
|
|
Регистрация: 07.06.2017
Сообщений: 47
|
|
$(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: '/'
});
});
Вот так?
|
|
12.06.2017, 00:34
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от SkyRewir
|
Вот так?
|
Я думал такие же дебаты как и в личку закончились. )
Сообщение от SkyRewir
|
озможно ли сделать так что, при отправке какой либо из трех форм
|
А где в коде форма отправляется?
$('form').submit(function() { //это событие при отправлении формы
if(!$(this).find('input:checked').length) {
alert('Выберите один из вариантов');
return false
}
//и гарантированно, что форма отправлена, это здесь
$.cookie('smartCookies', true, {
expires: 7,
path: '/'
});
}).find('input:checkbox').change(function()
|
|
13.06.2017, 06:23
|
Аспирант
|
|
Регистрация: 07.06.2017
Сообщений: 47
|
|
Сообщение от laimas
|
Я думал такие же дебаты как и в личку закончились. )
А где в коде форма отправляется?
$('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: '/'
});
});
};
});
|
|
13.06.2017, 06:38
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Вы запускали предложенное? Последняя попытка пояснения, далее думайте сами.
if (!$.cookie('smartCookies')) { - если у клиента не установлена кука, то
$(document).mouseleave(function (e) { - по уходу с клиентской области показать окно и установить куку, то есть после этого окно уже не будет показываться.
Чтобы оно не показывалось и после отправления любой из форм, эту куку нужно установить и при отправлению формы. Как это сделать и было показано.
Вопрос который может возникнуть здесь, так это о времени действия куки, но это вопрос ни столько самого кода, а логики вашего приложения, и насколько "прикукить" клиента решать не мне, а вам.
Что еще нужно?
|
|
13.06.2017, 07:26
|
Аспирант
|
|
Регистрация: 07.06.2017
Сообщений: 47
|
|
laimas прошу прощения, что я такой тугодум
Я просто не могу понять правильно ли написан код(
Сообщение от SkyRewir
|
$(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: '/'
});
});
|
|
|
13.06.2017, 07:37
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Вопрос - что выполняется этим обработчиком:
.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 ? 'Заполните' : '')
});
});
|
|
|
|