ФОРМЫ / ФОРМА "КУПИТЬ В 1 КЛИК" на BOOTSTRAPE

Заметка создана: 15 января 2025 г.
Кнопка вызова формы - добавляем в карточку товара или в каталог товаров
HTML
<button type="button" class="button btn-primary send-zakaz" data-item="{name}" data-bs-toggle="modal" data-bs-target="#zakazModal">
<i class="fa fa-shopping-cart"></i>
<span>Купить</span>
</button >
HTML. Код формы
<div class="modal fade" id="zakazModal" tabindex="-1" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
    <h4 class="modal-title" id="myModalLabel">Купить в 1 клик</h4>
    <button class="btn-close" type="button" data-bs-dismiss="modal"></button>
</div>
<div class="box-content">
<form method="get" class="form_call1">
<div class="row">
    <div class="col-xs-12 text">
        <h6>Модель: <span id="item"></span></h6>
    </div>
    <div class="col-xs-12 text-center mess" id="form_err1"></div>
    <div class="col-xs-12 text-center mess" id="form_right1"></div>
    <div class="col-xs-12">
        <input id="name" maxlength="80" placeholder="Ваше Имя" type="text" />
    </div>
    <div class="col-xs-12">
        <input id="phone" maxlength="80" placeholder="Телефон *" type="text" required/>
    </div>
    <div class="col-xs-12">
        <button type="submit" autocomplete="off" class="zakaz-submit">Отправить заказ</button>
    </div>
</div>
</form>
</div>
</div>
</div>
</div>
Валидация формы на jQuery
$(function() {
     $('form.form_call1').submit(function(){
     phone=$('input#phone').val();
     name=$('input#name').val();
         reg = /^\d[\d\(\)\ -]{5,14}\d$/;
         item=$('#item').text();
     err='';
          if (phone =='') {err+='<span>Вы не указали свой телефон</span>';}
      else  if (!(reg.test(phone))) {err+='  <span>Неверно указан Телефон</span>';}
      if (err!='') {
       $('div#form_err').html(err);  // показываем ошибку
          } else {
       $.get( "/forms/send-zakaz.php?phone="+phone+"&name="+name+"&item="+item, function( data ) {  //указываем путь к обработчику отправки формы 
       $('div#form_right').html(data);  // показываем подтверждение удачной отправки
           setTimeout(function(){
                    location.reload();
                    }, 1000);
           });
           }
             return false;
       });

      $('.send-zakaz').click(function() {
            var nameg = $(this).data('item');
            // Добавляем в id=item название товара
            $('span#item').html(nameg);
            // Добавляем в дополнительное поле input название товара
            $('input[name=item]').val(nameg);
      });
});

PHP . Обработчик отправки фоормы

<?php
//несколько ящиков перечисляются через запятую
$to = "zakaz@site.ru" ;
if( $_GET['phone'] ) {
$subject = "Заказ на сайте SITE.RU";
$message = '
<p>Пользователь сайта SITE.RU заполнил форму Заказа в 1 клик:<br/>
<strong>Имя: </strong>'.$_GET['name'].'<br/>
<strong>Телефон: </strong>'.$_GET['phone'].'<br/>
<strong>Товар: </strong>'.$_GET['item'].'
</p>
';
$headers = "Content-type: text/html; charset=utf-8 \r\n";
$headers .= "From: zakaz@site.ru\r\n";
mail($to, $subject, $message, $headers);
//header('Content-Type: application/json');
}
?>
<span>Заказ успешно отправлен!</span>

Стили CSS

.modal-content {border-radius: 13px; box-shadow: 0 0 12px rgba(0,0,0,.2); position: relative!important; width:100%; max-width: 600px!important; background: #fff!important; border: 3px solid rgb(251,119,3)!important; padding: 20px; margin: 3% auto!important;}
.modal-header {padding: 0 0 10px;}
.modal-header .close { background: url(/images/close.png) no-repeat; display:inline-block; padding: 25px 25px 0 0!important; opacity:.7; }
.modal-header h4 {padding: 20px 55px 0; font-size: 32px!important; font-weight:300;}
.modal-content h6 {font-size: 18px!important; font-weight: 600!important; color:#666; margin: 19px 0 35px!important;}
.modal-content .box-content {padding: 0 55px;}
.modal-content input {
float: left!important;
height: 40px!important;
color: #b4b4b4!important;
font-size: 16px!important;
border: 2px solid #b4b4b4!important;
border-radius: 3px!important;
padding: 0 7px!important;
}
.modal-content button[type="submit"] {
float: left!important;
height: 44px;
position: inherit!important;
background: url(/images/button_icon.png) 0 50% no-repeat;
background-color: rgb(251,119,3)!important;
color: #fff!important;
font-size: 18px!important;
font-weight: 100!important;
border: none!important;
cursor: pointer!important;
padding: 0 17px 0 46px!important;
}
.modal-content input, .modal-content button[type="submit"] {margin: 20px 0; width:100%;}