Приветствую. Я понимаю, что тема заезжена, на гуглил много подсказок, но в связи с тем, что я не программист - грамотно применить их не смог. Есть две формы - одна в модальном окне (но тут думаю это не важно, потому что её код в html прописан) и есть не в модальном (перед подвалом). Так вот с модальной уходят данные (а данных там - 1 номер телефона, это "обратный звонок") , с обычной формы (ровно такой же, но не модальной) не уходят. Вот сама форма (их 2 копии получается в html) Код (Text): div class="formcall6"> <form class="big-form2" action="send_order.php?type=8" method="post"> <input type="text" name="phone" class="hide"> <div class="big-form2__list mod1"> <div class="big-form2__item mod1"> <p>Телефон</p> <input type="text" name="tel6" placeholder="+7 (___) ___-__-__" class="big-form2__input mask"> </div> <div class="big-form2__item mod1"> <div class="check1 ch4"> <label class="check1__label"><input type="checkbox" checked>Согласен на обработку <i></i>персональных данных. <br><a href="[[~13]]">Политика конфиденциальности</a></label> </div> </div> <div class="big-form2__item mod1"> <div class="btns"><a onclick="proper6();return false;" class="big-form2__submit">Заказать</a></div> </div> </div> </form> </div> Вот то куда ссылается send_order.php?type=8 Код (Text): else if ($_GET['type']=='8') { $subject = 'Оформление заказа KLD'; $message .= 'Телефон: ' . iconv('utf-8','windows-1251',addslashes($_POST['tel6'])). "\r\n"; $headers = 'From: Заказ звонка с сайта KLD <info@kld-stroy.ru>' . "\r\n"; $headers .= 'Content-type: text/plain; charset=utf-8'; if (!$_POST['phone']) mail($to, "=?utf-8?B?" . base64_encode($subject) . "?=", $message, $headers); } Есть еще файл common.js в котором proper6() Код (Text): /* common */ function sendOrderCall6() { var sendfrm = true; if (sendfrm) { $.ajax({ type: 'POST', url: $('.formcall6 form').attr('action'), data: $('.formcall6 form').serialize(), success: function() { ym(57099535, 'reachGoal', 'oformlenie-zakaza'); $('input[type=text]').each(function() { $(this).val($(this).attr('data-place')); }); $('.modal').fadeOut(200); $('.none').removeClass('none'); $('.black').remove(); alerta(); } }); } } ... function proper6() { $('.none').removeClass('none'); const tels = [...document.querySelectorAll('input[name=tel6]')] const checks = [...document.querySelectorAll('.ch4 input')] let tel, check if (tels.length == 2) { if (tels[0].value.length >= tels[1].value.length) { tel = tels[0] check = checks[0] } else { tel = tels[1] check = checks[1] } } else { tel = tel[0] check = checks[0] } if(tel.value.replace(/\D/gi, '').length != 11 || check.checked == false) { if(tel.value.replace(/\D/gi, '').length != 11) { tel.classList.add('none'); } if(check.checked == false) { $('.ch4 label').classList.add('none'); } } else { sendOrderCall6(); $('.btns').append('<span class="black"></span>'); } }
У меня такое было - это конфликт переменных Две одинаковые формы на одной странице - все переменные совпадают и возникает глюк Во второй форме в подвале ко всем переменным добавь цифру 1 У тебя вторая форма внизу отправляет данные,а форма вверху делает данные "нулевыми"
Изменил переменную - имя поля tel6 на tel5... вообще другую форму указал вывод в модальное окно (там несколько форм). Теперь обработчик для формы такой: Код (Text): else if ($_GET['type']=='5') { $subject = 'Обратный звонок KLD'; $message = 'Имя: ' . iconv('utf-8','windows-1251',addslashes($_POST['name5'])). "\r\n"; $message .= 'Телефон: ' . iconv('utf-8','windows-1251',addslashes($_POST['tel5'])). "\r\n"; $headers = 'From: Заказ звонка с сайта KLD <info@kld-stroy.ru>' . "\r\n"; $headers .= 'Content-type: text/plain; charset=utf-8'; if (!$_POST['phone']) mail($to, "=?utf-8?B?" . base64_encode($subject) . "?=", $message, $headers); } Но всё равно не помогло. С другой формы вместо номера телефона приходит пусто.
Я хотел бы тебе помочь,но разбираться в твоем коде и налаживать переменные придется часа 4 Лучше не торопись и сам сделай "две разные формы",если ты не программист - лучше найми человека за 2000р...Профессионал быстро наладит У меня была такая ошибка,я копался 1 день пока не понял,что надо переменные изменить Может проще нижнюю форму вообще спратать??
В общем заработало. Дело было в этой проверке... Код (Text): if(tel.value.replace(/\D/gi, '').length != 11 || check.checked == false) { if(tel.value.replace(/\D/gi, '').length != 11) { tel.classList.add('none'); } браузер в консоли на эту строчку ругался при нажатие на "Отправить". Вместо length != 11 поставил length != 3 и заработало.. В связи с тем что я не программист (а просто 25 лет тыкаю на кнопки), я даже "рядом" не представляю что сделал) Но заработало. P.S. А ну и формы сейчас с разными переменными.
В этом коде написано "если длина номера телефона не равно 11 или номер не выделен" Ты поставил "если длина номера не равно 3",теперь попробуй отправить любой номер ,например 8920960 - он пропустится,будет новая ошибка Стандартные номера дляной 11 цифр
Я подозреваю что надо написать length==11,то есть отправлять номера телефона только длиной 11 цифр,чтобы не отправляли номер "9824" PHP: if(tel.value.replace(/\D/gi, '').length == 11 || check.checked == false) { if(tel.value.replace(/\D/gi, '').length== 11) { tel.classList.add('none'); } Есть смысл протестировать такое изменение