За последние 24 часа нас посетили 17468 программистов и 1725 роботов. Сейчас ищут 1554 программиста ...

Не уходят данные с одной из одинаковых форм на одной странице

Тема в разделе "Сделайте за меня", создана пользователем myakuhin, 2 мар 2024.

  1. myakuhin

    myakuhin Новичок

    С нами с:
    1 мар 2024
    Сообщения:
    3
    Симпатии:
    0
    Приветствую. Я понимаю, что тема заезжена, на гуглил много подсказок, но в связи с тем, что я не программист - грамотно применить их не смог. Есть две формы - одна в модальном окне (но тут думаю это не важно, потому что её код в html прописан) и есть не в модальном (перед подвалом). Так вот с модальной уходят данные (а данных там - 1 номер телефона, это "обратный звонок") , с обычной формы (ровно такой же, но не модальной) не уходят.
    Вот сама форма (их 2 копии получается в html)
    Код (Text):
    1. div class="formcall6">
    2.                         <form class="big-form2" action="send_order.php?type=8" method="post">
    3.                         <input type="text" name="phone" class="hide">
    4.                         <div class="big-form2__list mod1">
    5.                             <div class="big-form2__item mod1">
    6.                                 <p>Телефон</p>
    7.                                 <input type="text" name="tel6" placeholder="+7 (___) ___-__-__" class="big-form2__input mask">
    8.                             </div>
    9.                             <div class="big-form2__item mod1">
    10.                                 <div class="check1 ch4">
    11.                                     <label class="check1__label"><input type="checkbox" checked>Согласен на обработку <i></i>персональных данных. <br><a href="[[~13]]">Политика конфиденциальности</a></label>
    12.                                 </div>
    13.                             </div>
    14.                             <div class="big-form2__item mod1">
    15.                                 <div class="btns"><a onclick="proper6();return false;" class="big-form2__submit">Заказать</a></div>
    16.                             </div>
    17.                         </div>
    18.                     </form>
    19.                 </div>
    Вот то куда ссылается send_order.php?type=8
    Код (Text):
    1. else if ($_GET['type']=='8') {
    2.     $subject = 'Оформление заказа KLD';
    3.     $message .= 'Телефон: ' . iconv('utf-8','windows-1251',addslashes($_POST['tel6'])). "\r\n";
    4.     $headers = 'From: Заказ звонка с сайта KLD <info@kld-stroy.ru>' . "\r\n";
    5.     $headers .= 'Content-type: text/plain; charset=utf-8';
    6.     if (!$_POST['phone']) mail($to, "=?utf-8?B?" . base64_encode($subject) . "?=", $message, $headers);
    7. }
    Есть еще файл common.js в котором proper6()
    Код (Text):
    1. /* common */
    2. function sendOrderCall6() {
    3.     var sendfrm = true;
    4.     if (sendfrm) {
    5.         $.ajax({
    6.             type: 'POST',
    7.             url: $('.formcall6 form').attr('action'),
    8.             data: $('.formcall6 form').serialize(),
    9.             success: function() {
    10.                 ym(57099535, 'reachGoal', 'oformlenie-zakaza');
    11.                 $('input[type=text]').each(function() {
    12.                     $(this).val($(this).attr('data-place'));
    13.                 });
    14.                 $('.modal').fadeOut(200);
    15.                 $('.none').removeClass('none');
    16.                 $('.black').remove();
    17.                 alerta();
    18.             }
    19.         });
    20.     }
    21. }
    22. ...
    23. function proper6() {
    24.     $('.none').removeClass('none');
    25.    
    26.     const tels = [...document.querySelectorAll('input[name=tel6]')]
    27.     const checks = [...document.querySelectorAll('.ch4 input')]
    28.     let tel, check
    29.     if (tels.length == 2) {
    30.         if (tels[0].value.length >= tels[1].value.length) {
    31.             tel = tels[0]
    32.             check = checks[0]
    33.         } else {
    34.             tel = tels[1]
    35.             check = checks[1]
    36.         }
    37.     } else {
    38.         tel = tel[0]
    39.         check = checks[0]
    40.     }
    41.  
    42.    
    43.     if(tel.value.replace(/\D/gi, '').length != 11 || check.checked == false) {
    44.         if(tel.value.replace(/\D/gi, '').length != 11) {
    45.             tel.classList.add('none');
    46.         }
    47.         if(check.checked == false) {
    48.             $('.ch4 label').classList.add('none');
    49.         }
    50.     }
    51.     else {
    52.         sendOrderCall6();
    53.         $('.btns').append('<span class="black"></span>');
    54.     }
    55. }
     
  2. Dremax

    Dremax Активный пользователь

    С нами с:
    13 фев 2015
    Сообщения:
    154
    Симпатии:
    4
    У меня такое было - это конфликт переменных
    Две одинаковые формы на одной странице - все переменные совпадают и возникает глюк
    Во второй форме в подвале ко всем переменным добавь цифру 1
    У тебя вторая форма внизу отправляет данные,а форма вверху делает данные "нулевыми"
     
  3. myakuhin

    myakuhin Новичок

    С нами с:
    1 мар 2024
    Сообщения:
    3
    Симпатии:
    0
    Изменил переменную - имя поля tel6 на tel5... вообще другую форму указал вывод в модальное окно (там несколько форм). Теперь обработчик для формы такой:
    Код (Text):
    1. else if ($_GET['type']=='5') {
    2.     $subject = 'Обратный звонок KLD';
    3.     $message = 'Имя: ' . iconv('utf-8','windows-1251',addslashes($_POST['name5'])). "\r\n";
    4.     $message .= 'Телефон: ' . iconv('utf-8','windows-1251',addslashes($_POST['tel5'])). "\r\n";
    5.     $headers = 'From: Заказ звонка с сайта KLD <info@kld-stroy.ru>' . "\r\n";
    6.     $headers .= 'Content-type: text/plain; charset=utf-8';
    7.     if (!$_POST['phone']) mail($to, "=?utf-8?B?" . base64_encode($subject) . "?=", $message, $headers);
    8. }
    Но всё равно не помогло. С другой формы вместо номера телефона приходит пусто.
     
  4. Dremax

    Dremax Активный пользователь

    С нами с:
    13 фев 2015
    Сообщения:
    154
    Симпатии:
    4
    Я хотел бы тебе помочь,но разбираться в твоем коде и налаживать переменные придется часа 4
    Лучше не торопись и сам сделай "две разные формы",если ты не программист - лучше найми человека за 2000р...Профессионал быстро наладит

    У меня была такая ошибка,я копался 1 день пока не понял,что надо переменные изменить

    Может проще нижнюю форму вообще спратать??
     
  5. myakuhin

    myakuhin Новичок

    С нами с:
    1 мар 2024
    Сообщения:
    3
    Симпатии:
    0
    В общем заработало. Дело было в этой проверке...
    Код (Text):
    1.  if(tel.value.replace(/\D/gi, '').length != 11 || check.checked == false) {
    2.         if(tel.value.replace(/\D/gi, '').length != 11) {
    3.             tel.classList.add('none');
    4.         }
    браузер в консоли на эту строчку ругался при нажатие на "Отправить".
    Вместо length != 11 поставил length != 3 и заработало..
    В связи с тем что я не программист (а просто 25 лет тыкаю на кнопки), я даже "рядом" не представляю что сделал) Но заработало.
    P.S. А ну и формы сейчас с разными переменными.
     
  6. Dremax

    Dremax Активный пользователь

    С нами с:
    13 фев 2015
    Сообщения:
    154
    Симпатии:
    4
    В этом коде написано "если длина номера телефона не равно 11 или номер не выделен"

    Ты поставил "если длина номера не равно 3",теперь попробуй отправить любой номер ,например 8920960 - он пропустится,будет новая ошибка

    Стандартные номера дляной 11 цифр
     
  7. Dremax

    Dremax Активный пользователь

    С нами с:
    13 фев 2015
    Сообщения:
    154
    Симпатии:
    4
    Я подозреваю что надо написать length==11,то есть отправлять номера телефона только длиной 11 цифр,чтобы не отправляли номер "9824"
    PHP:
    1.  if(tel.value.replace(/\D/gi, '').length == 11 || check.checked == false) {
    2.         if(tel.value.replace(/\D/gi, '').length== 11) {
    3.             tel.classList.add('none');
    4.         }
    Есть смысл протестировать такое изменение