Простите, коллега, не хотел обидеть.
Но как-раз о программной логике и шла речь.
Ну вот мой вариант, если хотите:
Это где угодно:
<div id="callback-window"><!-- ему мы изначально в стилях даем display:none; -->
<form id="callbackForm">
<input id="callback-name" name="callback-name">
<input id="callback-phone" name="callback-phone">
<input id="callback-question" name="callback-question">
<input type="submit" value="Callback" id="sendCallback" class="button" />
</form>
</div>
js:
// итак, жмем на кнопку (коряво, но работает)
$('#callback-button').click(function(){
if ($('#callback-window').css('display') == 'none')
{
$('#callback-window').show(150);
}
else
{
$('#callback-window').hide(150);
}
});
// типа небольшой валидации
validationCallback = function(){
var result = true;
if ($('#callback-name').val() === '') {
result = false;
$('#callback-name').css("border", "1px solid #f00").css("background", "#ffebeb"); // тут мы на пустое поле проверяем и делаем постыдно красным =) В принципе, можно и регулярку подвесить, или еще чего.
}
if ($('#callback-phone').val() === '') {
result = false;
$('#callback-phone').css("border", "1px solid #f00").css("background", "#ffebeb"); //тут тоже
} return result; // можно аналогично и с полем комментария поступать. Да и вообще можно много чего придумать.
}
// здесь само действие. Обращаемся к контроллеру.
$('#sendCallback').click(function(){
if (validationCallback()) {
$.post('/index.php?route=common/callback/callback', // а вот и адрес контроллера
{ 'callback-name' : $('#callback-name').val(), 'callback-phone' : $('#callback-phone').val(), 'callback-question' : $('#callback-question').val() },
function(response){
if (response == 'success') {
//тут мы реагируем на успешную отправку. показываем окей, или еще чего-то...
}
});
} return false; });
Контроллер:
class ControllerCommonCallback extends Controller {
public function callback () {
$feedback_field = 'например_фид';
$mailto_field = 'например_мыло_магазина';
$fheader_field = 'запрос_обратного_звонка';
$data = $this->request->post;
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf8' . "\r\n";
$msg = '
<html>
<body>
<hr>
<p>Имя: '.$data['callback-name'].'</p>
<p>Телефон: '.$data['callback-phone'].'</p>
<p>Вопрос: '.$data['callback-question'].'</p>
<hr>
</body>
</html>
';
mail($mailto_field, $feedback_field, $msg, $headers);
echo 'success';
}
}
Ну и сама кнопка ;) Чуть не забыл =)
<div id="callback-button">Перезвоните мне</div>
Вроде, все.
CSS - по вкусу ;)
Воооот.
Не поленился и более-менее показал, как забацать именно обратный звонок простейший.