Кому ещё актуально валидация (брал за основу Скачать: call.zip), просто копируете в header.tpl перед </head> код ниже. Собрал в инете в кучу скрипты (сразу скажу - я не программист), но работает:
Код для header.tpl
<!-- call -->
<script type="text/javascript" src="call/modal.js">
</script><link rel="stylesheet" type="text/css" href="call/modal.css"/>
<div id="kmacb-form" class="modal"><div class="modal-block">
<div class="icon-close"></div>
<div class="title">Перезвонить Вам в течении пары минут?</div>
<div class="content"><div class="padding">
<form method="post" action="call/send.php">
<p style="text-align:center">
<input id="cyr" type="text" maxlength="12" minlength="3" placeholder="Имя на русском" name="txtname" value="" required />
<p style="text-align:center">
<input type="text" name="txtmessage" id="tel" placeholder="Ваш номер" value="" required /></p>
<p style="text-align:center">
<input class="linkButton" type="submit" value="ПЕРЕЗВОНИТЕ"
name="submit" /></p></form></div></div></div></div>
<!-- запрет латиницы -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
jQuery(function($) {
$('#cyr').on('keypress', function() {
var that = this;
setTimeout(function() {
var res = /[^А-Яа-яЁё]/g.exec(that.value);
that.value = that.value.replace(res, '');
}, 0);
});
});
})
</script>
<!-- end запрет латиницы -->
<!-- запрет букв для телефона -->
<script>
window.addEventListener("DOMContentLoaded", function() {
function setCursorPosition(pos, elem) {
elem.focus();
if (elem.setSelectionRange) elem.setSelectionRange(pos, pos);
else if (elem.createTextRange) {
var range = elem.createTextRange();
range.collapse(true);
range.moveEnd("character", pos);
range.moveStart("character", pos);
range.select()
}
}
function mask(event) {
var matrix = "+7 (___) ___ ____",
i = 0,
def = matrix.replace(/\D/g, ""),
val = this.value.replace(/\D/g, "");
if (def.length >= val.length) val = def;
this.value = matrix.replace(/./g, function(a) {
return /[_\d]/.test(a) && i < val.length ? val.charAt(i++) : i >= val.length ? "" : a
});
if (event.type == "blur") {
if (this.value.length == 2) this.value = ""
} else setCursorPosition(this.value.length, this)
};
var input = document.querySelector("#tel");
input.addEventListener("input", mask, false);
input.addEventListener("focus", mask, false);
input.addEventListener("blur", mask, false);
});
</script>
<!-- end запрет букв для телефона -->
<!-- end call -->
Изменённый код файла send.php (скопируйте код ниже с заменой оригинального кода в файле send.php). Не будет в спам приходить.
код файла send.php
<?php if(!$_POST) exit;
$to = 'вашаккаунт@mail.ru'; #почта куда придёт запрос - ваша почта
$name = $_POST['txtname'];
$email = 'вашмагазин-callback'; #для почтовой службы - откуда отправлено письмо, что бы не было БЕЗ АДРЕСАТА
$comment = $_POST['txtmessage'];
if(get_magic_quotes_gpc()) { $comment = stripslashes($comment); }
$subject = 'Посетитель, ' . $name . ', запросил обратный звонок.'; #текст темы сообщения
$msg = "$name, просит перезвонить на телефон: $comment\n "; #текст сообщения
$msg .= "Телефон: $comment\r\n\n"; #текст сообщения
$msg .= "-------------------------------------\r\n"; #текст сообщения
$msg .= "Запрос обратного звонка с сайта ВАШСАЙТ.РУ \r\n"; #текст сообщения
if(@mail($to, $subject, $msg, "From: $email\r\nReturn-Path: $email\r\n"))
{ echo "<span class='success-msg'>Сообщение отправлено. Нажмите <НАЗАД> для возврата на страницу сайта</span>";} else { echo "<span class='error-msg'>Сообщение не отправлено.</span>"; } ?>
Ещё раз СПАСИБО автору темы glGizma
Вот только ещё не смог сделать что бы после отправки появлялась не страница "Сообщение отправлено", а модальное окно "Сообщение отправлено" и пропадало оставляя пользователя страницу на которой он был