@i_ikigai

Как соединить n-ое количество функций в одну?

Нужно для валидации 11 форм обратной связи соединить около 11 функций
Думаю через 11 файлов php и 11 функций для каждой, чувствую что поступаю неправильно но другого решения не смог придумать. Как в одном файле объединить функции?
function validateForm() {
 
    document.getElementById('status').innerHTML = "Отправка...";
    formData = {
        'name'     : $('input[name=name]').val(),
        'phone'    : $('input[name=phone]').val(),
        'city'     : $('input[name=city]').val(),
        'subject'  : $('input[name=subject]').val(),
        'email'    : $('input[name=email]').val(),
        'message'  : $('textarea[name=message]').val()
    };
 
 
   $.ajax({
    url : "mail/mail.php",
    type: "POST",
    data : formData,
    success: function(data, textStatus, jqXHR)
    {
 
        $('#status').text(data.message);
        if (data.code) //If mail was sent successfully, reset the form.
        $('#contact-form').closest('form').find("input[type=text], textarea").val("");
    },
    error: function (jqXHR, textStatus, errorThrown)
    {
        $('#status').text(jqXHR);
    }
});
 
 
 
}

function validateForm() {
 
    document.getElementById('status1').innerHTML = "Отправка...";
    formData = {
        'name1'     : $('input[name=name1]').val(),
        'phone1'    : $('input[name=phone1]').val(),
        'city1'     : $('input[name=city1]').val(),
        'subject1'  : $('input[name=subject1]').val(),
        'email1'    : $('input[name=email1]').val(),
        'message1'  : $('textarea[name=message1]').val()
    };
 
 
   $.ajax({
    url : "mail/mail1.php",
    type: "POST",
    data : formData,
    success: function(data, textStatus, jqXHR)
    {
 
        $('#status1').text(data.message);
        if (data.code) //If mail was sent successfully, reset the form.
        $('#contact-form').closest('form').find("input[type=text], textarea").val("");
    },
    error: function (jqXHR, textStatus, errorThrown)
    {
        $('#status1').text(jqXHR);
    }
});
 
 
 
}


<?php
$name = $_POST['name'];
$phone = $_POST['phone'];
$city = $_POST['city'];
$subject = $_POST['subject'];
$email = $_POST['email'];
$message = $_POST['message'];
 
header('Content-Type: application/json');
if ($name === ''){
  print json_encode(array('message' => 'Введите имя', 'code' => 0));
  exit();
}
$phone = $_POST['phone'];
if(!preg_match('/^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$/', $phone)){
    exit(print json_encode(array('message' => 'Некорректный телефон', 'code' => 0)));
}
if ($city === ''){
  print json_encode(array('message' => 'Введите населенный пункт', 'code' => 0));
  exit();
}
 
// if ($email === ''){
//   print json_encode(array('message' => 'Введите почту', 'code' => 0));
//   exit();
//   }
//   else {
//   if (!filter_var($email, FILTER_VALIDATE_EMAIL)){
//   print json_encode(array('message' => 'Введите верный адрес почты', 'code' => 0));
//   exit();
//   }
// }
if ($subject === ''){
  print json_encode(array('message' => 'Введите объект оценки', 'code' => 0));
  exit();
}
if ($message === ''){
  print json_encode(array('message' => 'Напишите подробный адрес и объект оценки', 'code' => 0));
  exit();
}
$content="Имя заказчика: $name \nТелефон заказчика: $phone \nРасположение заказчика: $city \nEmail заказчика: $email \nСообщение: $message";
$recipient = "mail@gmail.com";
// $mailheader = "From: $email \r\n";
mail($recipient, $subject, $content, $mailheader) or die("Ошибка!");
print json_encode(array('message' => 'Ваше обращение отправлено, наши специалисты с вами свяжутся!', 'code' => 1));
exit();
?>

и
<?php
$name = $_POST['name1'];
$phone = $_POST['phone1'];
$city = $_POST['city1'];
$subject = $_POST['subject1'];
$email = $_POST['email1'];
$message = $_POST['message1'];
 
header('Content-Type: application/json');
if ($name === ''){
  print json_encode(array('message' => 'Введите имя', 'code' => 0));
  exit();
}
$phone = $_POST['phone1'];
if(!preg_match('/^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$/', $phone)){
    exit(print json_encode(array('message' => 'Некорректный телефон', 'code' => 0)));
}
if ($city === ''){
  print json_encode(array('message' => 'Введите населенный пункт', 'code' => 0));
  exit();
}
 
// if ($email === ''){
//   print json_encode(array('message' => 'Введите почту', 'code' => 0));
//   exit();
//   }
//   else {
//   if (!filter_var($email, FILTER_VALIDATE_EMAIL)){
//   print json_encode(array('message' => 'Введите верный адрес почты', 'code' => 0));
//   exit();
//   }
// }
if ($subject === ''){
  print json_encode(array('message' => 'Введите объект оценки', 'code' => 0));
  exit();
}
if ($message === ''){
  print json_encode(array('message' => 'Напишите подробный адрес и объект оценки', 'code' => 0));
  exit();
}
$content="Имя заказчика: $name \nТелефон заказчика: $phone \nРасположение заказчика: $city \nEmail заказчика: $email \nСообщение: $message";
$recipient = "mail@gmail.com";
// $mailheader = "From: $email \r\n";
mail($recipient, $subject, $content, $mailheader) or die("Ошибка!");
print json_encode(array('message' => 'Ваше обращение отправлено, наши специалисты с вами свяжутся!', 'code' => 1));
exit();
?>
  • Вопрос задан
  • 216 просмотров
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Нужно для валидации 11 форм обратной связи соединить около 11 функций
это одинаковые формы? Зачем их 11? Я просто не могу придумать для чего 11 форм одинаковых делать...

UPD:
Итак, формы: убрать идентификатор(вам уже сказали, идентификатор - уникален, то есть может быть только 1 на страницу), все имена полей сделать одинаковыми(не надо их менять на name1 и тд, сделайте все формы одинаковыми по структуре), добавить общий класс на все формы(пусть будет тоже contact-form), убрать этот уродский onsubmit="return validateForm()", и функцию эту поменять на листенер(смотри ниже).
на этот класс добавить листенер на субмит, далее обработчик будет один одинаковый для всех форм:
$(function(){ // вешаем листенер по загрузке документа

$('.contact-form').on('submit', function(e){
  e.preventDefault();
  document.getElementById('status').innerHTML = "Отправка...";
  formData =  $(this).serialize();
  $.ajax({
    url : "mail/mail1.php",
    .... // далее все как у вас
})

})
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы