Показать сообщение отдельно
  #7 (permalink)  
Старый 20.07.2017, 07:58
Интересующийся
Отправить личное сообщение для DjonyBastone Посмотреть профиль Найти все сообщения от DjonyBastone
 
Регистрация: 20.07.2017
Сообщений: 10

Валидация с логикой
Всем привет

Форма с соглашением (checkbox)
html:
<form action="form.php" class="validate">
				<h3>Заказать консультацию <span>специалиста</span></h3>
				<p>Оставьте контактные данные и в течении 5 минут вам перезвонит опытный специалист!</p>
				<div class="wrap_input">
					<input type="text" name="name" placeholder="Введите Ваше имя" required>
					<i class="fa fa-user" aria-hidden="true"></i>
				</div>
				<div class="wrap_input">
					<input type="email" name="email" placeholder="Введите Ваш email">
					<i class="fa fa-phone" aria-hidden="true"></i>
				</div>
				<div class="wrap_input">
					<input type="tel" name="tel" placeholder="Введите Ваш телефон">
					<i class="fa fa-phone" aria-hidden="true"></i>
				</div>
                <div class="form__checkbox">
                    <label for="form__checkbox">
                        <span>
                            <input id="form__checkbox" title="Нужно принять соглашение" name="consent" type="checkbox" checked>
                            <i></i>
                        </span>
                        <a href="#consent_form" class="popup consent">Нажимая кнопку «Получить консультацию», я даю свое согласие на обработку моих персональных данных, в соответствии с Федеральным законом от 27.07.2006 года №152-ФЗ «О персональных данных», на условиях и для целей, определенных в Согласии на обработку персональных данных</a>
                    </label>
                </div>
				<button type="submit" class="red_btn">получить консультацию</button>
			</form>


Существующая валидация:
$(".validate").each(function() {
        var it = $(this);
        it.validate({
            rules: {
                tel: {required: true},
                email: {required: true},
                consent : {required: true}
            },
            messages: {},
            errorPlacement: function(error, element) {},
            submitHandler: function(form) {
                var thisForm = $(form);

                $.ajax({
                    type: "POST",
                    url: thisForm.attr("action"),
                    data: thisForm.serialize()
                }).done(function() {
                    $.fancybox({
                        href: '#thanks',
                        wrapCSS: "popup",
                        openEffect: "fade",
                        closeEffect: "fade",
                        helpers: {
                            overlay: {
                                locked: false
                            }
                        }
                    });
                    thisForm.find("input:not([type=hidden], [type=radio])").val("");
                });
                return false;
            },
            success: function() {},
            highlight: function(element, errorClass) {
                $(element).parent().addClass('error');
            },
            unhighlight: function(element, errorClass, validClass) {
                $(element).parent().removeClass('error');
            }
        })
    });


Планируется:
  1. Обязательный к заполнению - телефон или емейл, Но можно и оба отправить
  2. Если чек бокс отмечен - отправляем форму
  3. Если чек бокс не отмечен - вызываем лист соглашения (fancybox, а в нем текст и 2 кнопки - принять/не принять).
  4. Лист соглашения - при приеме соглашения форма с веденными ранее данными отправляется. Если не соглашается - делаем выход из соглашения и закрываем всё (fancybox.close)

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

P.S. consent : {required: true} - Эта проверка не работает, форма все равно отправляет данные
Ответить с цитированием