Сообщение от laimas
|
Зачем тогда копируете чужое, да еще не понимая что к чему. И какую вам подсказочку можно дать не имея понятия что происходит на сервере?
Вот это к примеру
input type="tel" class="valid" name="sq" id="sq"
но
area: jQuery('#sq').val()
для чего? Это кто такое придумал, вы или же скопировано так? Почему тогда не сразу name="area" и отправлять форму обрабатывая это событие? Сервер хоть ожидает area или ...?
Valid() и obrCalc() для сервера пустой звук, он об этом не знает. Хотите получать почту, значит проверяйте форму на сервере, реагируйте на ошибки заполнения.
А вариантов диалога клиент-сервер может быть множество, все их как примеры перечислять зачем, чтобы вы их как это код копировали "как есть" и "а че не работает?".
|
Ваш упрек правильный - мне и самому не приятно что-то делать не понимаю сути... но в свое время, я именно так "методом тыка" изучил html, css и даже немного php. JS для меня пока "темный лес" - это правда ((
Передо мной стоит задача - перенести готовый калькулятор (не украденный, а сделанный на заказ) с одного сайта на другой и немного переработать внешний вид. Калькулятор состоит из двух файлов, насколько я понимаю calc.php и mail.php (собственно сама отправка почты)
calc.php (туда же перенес функцию Valid(), которая была в отдельном js файле:
<form method="post" action="/wp-content/themes/xmag-child/calc/mail.php?go=quick" id="form_888">
<h3>Калькулятор стоимости</h3>
<div class="pole_calc inline-str"><input type="tel" class="valid" name="sq" id="sq" style="width:73px" placeholder=" 60-3000" /><label>Площадь (кв.м.)</label></div>
<div class="pole_calc inline-str"><input type="tel" name="th" class="valid" id="th" style="width:73px" placeholder=" 50-150" /><label>Толщина (мм)</label></div>
<div class="pole_calc inline-str"><input type="tel" name="et" id="et" style="width:50px" class="valid" placeholder=" 1-25" /><label>Этаж</label></div>
<p>Местоположение объекта: <input type="text" name="dst" id="dst" style="width:187px" class="valid" placeholder=" Населенный пункт" required/> </p>
<input type="hidden" name="contact_subject" value="Предварительный расчет стоимости стяжки" />
<input type="button" id="calk" style="display: inline-block !important;text-align: center;border-radius: 4px;background: #FF5100;; width:190px; height:41px; border:none;cursor:pointer;color:#fff;" value="Расчет стоимости"/>
<input type="reset" style="display: inline-block !important;text-align: center;border-radius: 4px;background: #20AA73;; width:150px; height:41px; border:none;cursor:pointer;color:#fff;" value="Очистить"/>
<p>Итого:</p><b><input type="text" id="results" name="price" value="" readonly /></b>
<p>Отправить расчет на свою почту:</p>
<input type="email" name="useremail" id="calc_email" value="" required/>
<input type="button" class="button" value="Отправить" id="button_888"/>
</form>
<script type="text/javascript">
jQuery(function(){
jQuery('.trigger#trigger .t').text('Калькулятор');
jQuery('#calk').click(function(){
obrCalc();
});
var obrCalc = function(){
var sq = jQuery('#sq').val();
var th = jQuery('#th').val();
var et = jQuery('#et').val();
var dst = jQuery('#dst').val();
var k1 = 0; var k2 = 0; var k3 = 0;
var checkErr = false;
var x = 1;
var y = 0;
var z = 0;
/*проверка ввода*/
if ((sq == 0)||(th == 0)||(et == 0)){
alert('Необходимо указать все размеры!');
return;
}
if (isNaN(sq) || isNaN(th) || isNaN(et)){
alert('Введите число!');
return;
}
//..здесь всякие расчеты - убрал что бы место не занимало
function Valid(){
res = true;
jQuery('form#form_888 input.valid').each(function(){
if ( jQuery(this).val() == '') {
jQuery(this).addClass('novalid');
jQuery(this).addClass('animated');
jQuery(this).addClass('shake');
res = false;
}
});
return res;
};
function SayHello(){
if( Valid() ) {
jQuery('.trigger.active').trigger('click');
var th = jQuery('form#form_888');
jQuery.ajax({
type: "POST",
url: "/wp-content/themes/xmag-child/calc/mail.php", //Change
data: th.serialize()
}).done(function() {
// ThsPopUp(true);
swal("Благодарим за заявку!", "Просчет отправлен на вашу почту!", "success");
});
return false;
}
};
jQuery('.fa.fa-times').click(function(){
ThsPopUp(false);
});
jQuery('#button_888').click(function(){
if(Valid()){
if(obrCalc()){
var json = {
area: jQuery('#sq').val(),
aver_thick_screed: jQuery('#th').val(),
floor: jQuery('#et').val(),
Location_of_object: jQuery('#dst').val(),
summa: jQuery('#results').val(),
my_mail: jQuery('#calc_email').val()
};
jQuery.post('/wp-content/themes/xmag-child/calc/mail.php',json,function(data){
data = JSON.parse(data);
console.log(data);
if(data['status']=='1'){
alert('Ваш заказ принят, спасибо!');
}
});
}
}
});
});
</script>
mail.php:
<?php
/*
* Contact Form Class
*/
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');
$admin_email = "mail@mail.ru"; // Your Email
$message_min_length = 1; // Min Message Length
class Contact_Form{
function __construct($details, $email_admin){
$this->area = trim(stripslashes($details['area']));
$this->aver_thick_screed = trim(stripslashes($details['aver_thick_screed']));
$this->floor = trim(stripslashes($details['floor']));
$this->Location_of_object = trim(stripslashes($details['Location_of_object']));
$this->summa = trim(stripslashes($details['summa']));
$this->my_mail = trim(stripslashes($details['my_mail']));
$this->subject = "Заказ с калькулятора!"; // Subject
$this->message =
"<h1>Данные отправителя</h1>
<div style='font: 14px \"trebuchet ms\";'>
<br>
Площадь помещения (кв.м.): <b>".$this->area."</b>
<br>
Средняя толщина стяжки (мм): <b>".$this->aver_thick_screed."</b>
<br>
Этаж: <b>".$this->floor."</b>
<br>
Местоположение объекта: <b>".$this->Location_of_object."</b>
<br>
Итого: <b>".$this->summa."</b>
<br>
Почта отправителя: <b>".$this->my_mail."</b>
</div>";
$this->email_admin = $email_admin;
$this->response_status = 1;
$this->response_html = "Ваша заказ принят!";
}
private function sendEmail(){
$mail = mail($this->email_admin, $this->subject, $this->message,
"From: Teeth\r\n"
."Content-type: text/html; charset=utf-8\r\n"
."Reply-To: ".$this->contact."\r\n"
."X-Mailer: PHP/" . phpversion());
$mail2 = mail($this->my_mail, $this->subject, $this->message,
"From: Teeth\r\n"
."Content-type: text/html; charset=utf-8\r\n"
."Reply-To: ".$this->contact."\r\n"
."X-Mailer: PHP/" . phpversion());
if($mail)
{
$this->response_status = 1;
$this->response_html = $this->message;
}
}
function sendRequest(){
if($this->response_status)
{
$this->sendEmail();
}
$response = array();
$response['status'] = $this->response_status;
$response['html'] = $this->message;
echo json_encode($response);
}
}
$contact_form = new Contact_Form($_POST, $admin_email);
$contact_form->sendRequest();
?>