Показать сообщение отдельно
  #4 (permalink)  
Старый 16.05.2015, 08:45
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Какой вставить я не знаю, то есть есть ли такой готовый, а вот писать надо не так. Во-первых ваш калькулятор работает постфактум, а не в реальном режиме, так как браузер показывает наличие ошибок в коде только после потере фокуса элементом.
Во-вторых, определять в функции "поголовно" каждый элемент ввода как:

var Pol2 = document.getElementById("Pol2");
var Pol3 = document.getElementById("Pol3");
var Pol4 = document.getElementById("Pol4");
var Pol5 = document.getElementById("Pol5");
.....

и

var price_Pol2 = 0;
var price_Pol3 = 0;
var price_Pol4 = 0;
var price_Pol5 = 0;

совсем не нужно, как и вести расчеты таким способом:

....
price_Potolok11 += parseInt(Potolok11.value)*150;
price_Potolok12 += parseInt(Potolok12.value)*500;
price_Potolok13 += parseInt(Potolok13.value)*450;
price_Potolok=price_Potolok1 + price_Potolok2 + price_Potolok3 + price_Potolok4 ....

это излишество. Нужно либо обходить коллекцию полей просчитывая сумму, либо поступать иным способом. Обход коллекции циклом можно, но когда их много, то жаба давит зря расходовать ресурсы системы. )

Можно поступать иначе, обрабатывать два события - onkeydown и onkeyup элемента. В обработчике события onkeydown получать значение value элемента, умножая его на цену за услугу им определяемую, получая сумму за эту услугу. Эту сумму вычитать из общей суммы.
В обработчике onkeyup тоже самое, но полученную сумму за услугу складывать с общей суммой.

В этих обработчиках нужно исключить обработку клавиш стрелка влево/вправо и табуляции.

Это будет махонькая функция не требующая объявлений price_Potolok11 и прочих.

Насчет оправки почты, тут не понятно зачем это нужно, так как по уму, калькулятор должен считать только для клиента, то есть как уведомление. А на сервер должен отправляться массив данных, как id каждой услуги и выбранное значение для нее. Сервер должен хранить в базе под id услуг их описание и цену за указанную единицу.

В базу заказов должны записывать данные заказчика, и параметры его заказа, включая и его дату.

На основе полученных данных от клиента, сервер получает из базы цену этих услуг, их описание, и по указанному количеству производит расчет, который и отправляет почтой по указанному пользователем электронному адресу. То есть не только контакты заказчика, но и что он заказал. Или же только контакты заказчика и чего-то там о заказе, но еще и ID заказа, который содержит параметры.

Как в этом плане у вас, я не смотрел по коду, но по уму вообще-то делают так.
Ответить с цитированием