Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.06.2017, 18:26
Аспирант
Отправить личное сообщение для SkyRewir Посмотреть профиль Найти все сообщения от SkyRewir
 
Регистрация: 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>


Возможно ли сделать так что, при отправке какой либо из трех форм показанных на скриншотах, модальный диалог не показывался пользователю

Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 11.06.2017, 18:53
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Так и надо было сразу вопрос ставить, а то кнопки, щелчки... ничего не понять, что надо. )

В ранее показанном коде обработчика отправки формы добавить это:

$.cookie('smartCookies', true, {
          expires: 7,
          path: '/'
        });
Ответить с цитированием
  #3 (permalink)  
Старый 11.06.2017, 20:00
Аспирант
Отправить личное сообщение для SkyRewir Посмотреть профиль Найти все сообщения от SkyRewir
 
Регистрация: 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.
Ответить с цитированием
  #4 (permalink)  
Старый 11.06.2017, 20:18
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от SkyRewir
Этот кусок кода вроде бы есть
Этот код к отправке формы отношения не имеет.
Ответить с цитированием
  #5 (permalink)  
Старый 11.06.2017, 20:55
Аспирант
Отправить личное сообщение для SkyRewir Посмотреть профиль Найти все сообщения от SkyRewir
 
Регистрация: 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: '/'
	        });
	});

Вот так?
Ответить с цитированием
  #6 (permalink)  
Старый 12.06.2017, 00:34
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от 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()
Ответить с цитированием
  #7 (permalink)  
Старый 13.06.2017, 06:23
Аспирант
Отправить личное сообщение для SkyRewir Посмотреть профиль Найти все сообщения от SkyRewir
 
Регистрация: 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: '/'
        });
      });
    };
  });
Ответить с цитированием
  #8 (permalink)  
Старый 13.06.2017, 06:38
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Вы запускали предложенное? Последняя попытка пояснения, далее думайте сами.

if (!$.cookie('smartCookies')) { - если у клиента не установлена кука, то
$(document).mouseleave(function (e) { - по уходу с клиентской области показать окно и установить куку, то есть после этого окно уже не будет показываться.

Чтобы оно не показывалось и после отправления любой из форм, эту куку нужно установить и при отправлению формы. Как это сделать и было показано.

Вопрос который может возникнуть здесь, так это о времени действия куки, но это вопрос ни столько самого кода, а логики вашего приложения, и насколько "прикукить" клиента решать не мне, а вам.

Что еще нужно?
Ответить с цитированием
  #9 (permalink)  
Старый 13.06.2017, 07:26
Аспирант
Отправить личное сообщение для SkyRewir Посмотреть профиль Найти все сообщения от SkyRewir
 
Регистрация: 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: '/'
	        });
	});
Ответить с цитированием
  #10 (permalink)  
Старый 13.06.2017, 07:37
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Вопрос - что выполняется этим обработчиком:

.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 ? 'Заполните' : '')
    });
});
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не работает jquery скрипт, если её подклучаю dadli Общие вопросы Javascript 7 15.05.2012 11:11
Как узнать какой скрипт вызывается при клике по эленету (если это прямо не прописано) Dmitriy Komar Events/DOM/Window 4 08.12.2011 17:21
Игнорировать внешний скрипт если он не загружается shultz1988 Javascript под браузер 0 30.11.2011 13:40
Скрипт работает только если подключать js в самом низу html! Pekkonen jQuery 3 26.01.2011 01:44
остановить скрипт если мышка не двигалась 2 минуты на этом сайте TavRox jQuery 4 17.01.2011 15:00