Есть простой код заказа обратного звонка
<div class="messages"></div>
<div class="form1"><input type="phone" id="user_phone" value="" placeholder="Ваш телефон:" />
<input type="button" value="Отправить" id="btn_submit" /></div>
<script>
$(document).ready(function(){
$('#btn_submit').click(function(){
// собираем данные с формы
var user_phone = $('#user_phone').val();
// отправляем данные
$.ajax({
url: "action.php", // куда отправляем
type: "post", // метод передачи
dataType: "json", // тип передачи данных
data: { // что отправляем
"user_phone": user_phone
},
// после получения ответа сервера
success: function(data){
// выводим ответ сервера
$('.messages').html(data.result);
$('.form1').hide();
}
});
});
});
</script>
<script type="text/javascript">
jQuery(function($){
$("#user_phone").mask("+7 (999) 999-99-99");
});
</script>
и соответственно обработчик
<?php
$msg_box = ""; // в этой переменной будем хранить сообщения формы
$errors = array(); // контейнер для ошибок
// проверяем корректность полей
if($_POST['user_phone'] == "") $errors[] = "Поле 'Ваше имя' не заполнено!";
// если форма без ошибок
if(empty($errors)){
// собираем данные из формы
$message = "Телефон: " . $_POST['user_phone'] . "<br/>";
send_mail($message); // отправим письмо
// выведем сообщение об успехе
$msg_box = "<span style='color: green;'>Сообщение успешно отправлено!</span>";
}else{
// если были ошибки, то выводим их
$msg_box = "";
foreach($errors as $one_error){
$msg_box .= "<span style='color: red;'>$one_error</span><br/>";
}
}
// делаем ответ на клиентскую часть в формате JSON
echo json_encode(array(
'result' => $msg_box
));
// функция отправки письма
function send_mail($message){
// почта, на которую придет письмо
$mail_to = "1@mail.ru";
// тема письма
$subject = "Заказан обратный звонок с ";
// заголовок письма
$headers= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=utf-8\r\n"; // кодировка письма
$headers .= "From: Обратный звонок <info@>\r\n"; // от кого письмо
// отправляем письмо
mail($mail_to, $subject, $message, $headers);
}
Код работает, на почту отсылается все успешно. Стоит маска телефона jquery.maskedinput.min.js
При успешном выполнении претензий нет, форма скрывается, сообщение об успешной отправке показывается, письмо уходит на почту. Но если не дописать, например, номер телефона и нажать отправить, то форма скрывается и выскакивает сообщение об ошибке. Вот нужно, чтобы при ошибке форма не скрывалась, только после успешной отправки.
Спасибо.