Калькулятор цен для клиентов

Сегодня пользователи желают проверять сразу всю информацию на месте. Давайте установим калькулятор цен для Ваших клиентов.

Создадим структуру главной страницы:



<div id="full_calc">
<form>
<div id="type_of_site">
<p>Выберите тип сайта</p>
<p>
<select id="type_site">
<option value='0'>Выберите тип сайта</option>
<option value='1'>Визитка</option>
<option value='2'>Корпоративный</option>
</select>
</p>
</div>
<p id="tipus"></p>
<div id="config_site">
</div>
</form>
</div>
<p id="summ">Стоимость сайта: <strong><span></span></strong> р.</p>
<p id="summ_nds">Стоимость сайта для организаций плательщиков НДС: <strong><span></span></strong> р.</p>



Выбранный пункт из select с идентификатором type_site, загружает надлежащую форму в блок config_site.
Обработчик fullform.php формирует формы.


<?
if (isset($_POST["option"])) {
$option = $_POST["option"];

if ($option == 1) {
print '
<h3>Сайт визитка</h3>
<div id="design">
<p><strong>Дизайн:</strong></p>
<p><input checked disabled type="checkbox" name="" value="6000">Шаблон (6000 р.) <br>
<span>Шаблон рисуется на основании составленного брифа и соответствует требованиям заказчика.</span></p>

<p><input checked disabled type="checkbox" name="" value="4500">HTML-верстка (4500 р.) <br>
<span>На основании утвержденного шалона создается рабочий макет.</span></p>

<p><input type="checkbox" name="" value="1500">Разработка логотипа (1500 р.) <br>
<span>Логотип разрабатывается исходя из предпочтений заказчика.</span></p>

<p><input type="checkbox" name="" value="3000">Разработка шрифтов (4000 р.) <br>
<span>Разработка фирменных шрифтов предназначена для придания индивидуальности стилевому оформлению сайта.</span></p>

<p><strong>Наполнение сайта:</strong></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="270px">Услуги копирайтинга (1 страница)</td>
<td><input id="inputCell" name="300" size="1" type="text" value="0"> 300 р.</td>
</tr>
</table>
</div>

<div id="programming">
<p><strong>Программирование:</strong></p>
<p>Система управления сайтом (от 4000 р.) <br>
<span>При выборе CMS вы сможете выбрать какую конкретно CMS использовать.</span></p>
<p><select id="cms_radio">
<option value="0">Не использовать</option>
<option value="4000">CMS jADM (4000 р.)</option>
<option value="8000">Amiro.CMS: Визитка (8000 р.)</option>
<option value="6000">Joomla! (6000 р.)</option>
<option value="14000">1С-Битрикс: Старт (14000 р.)</option>
<option value="0">Другая (в зависимости от сложности)</option>
</select></p>
<p><input type="checkbox" name="" value="1000">Форма отправки писем (1000 р.) <br>
<span>Установка простой формы отправки писем или заявок посетителей. Простая форма содержит до 5 полей для ввода текста (Ф.И.О. отправителя, контактный телефон, e-mail, дополнительная информация и т.п.). Сообщение приходит на электронную почту в текстовом формате. Позволяет привести запросы посетителей к единой форме и избежать СПАМа.</span></p>

<p><input type="checkbox" name="" value="3000">Лента новостей (3000 р.) <br>
<span>Лента новостей с автоматической разбивкой по страницам, сортировкой по дате, возможностью самостоятельно добавлять, редактировать, удалять новости, вывод необходимого количества последних новостей на главную страницу, новости автоматически отображаются по 10 новостей на страницу с возможностью посмотреть новость более подробно, внизу идут ссылки 1, 2, 3... на страницы архива новостей.</span></p>

<p><input type="checkbox" name="" value="9000">Поиск по сайту (9000 р.) <br>
<span>Модуль поиска совпадений по словам и фразам на страницах сайта.</span></p>
</div>';}

if ($option == 2) {
print '
<h3>Корпоративный сайт</h3>
<div id="design">
<p><strong>Дизайн:</strong></p>
<p><input checked disabled type="checkbox" name="" value="10000">Шаблон (10000 р.) <br>
<span>Шаблон рисуется на основании составленного брифа и соответствует требованиям заказчика.</span></p>

<p><input checked disabled type="checkbox" name="" value="8000">HTML-верстка (8000 р.) <br>
<span>На основании утвержденного шалона создается рабочий макет.</span></p>

<p><input type="checkbox" name="" value="1500">Разработка логотипа (1500 р.) <br>
<span>Логотип разрабатывается исходя из предпочтений заказчика.</span></p>

<p><input type="checkbox" name="" value="3000">Разработка шрифтов (4000 р.) <br>
<span>Разработка фирменных шрифтов предназначена для придания индивидуальности стилевому оформлению сайта.</span></p>

<p><strong>Наполнение сайта:</strong></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="270px">Услуги копирайтинга (1 страница)</td>
<td><input id="inputCell" name="300" size="1" type="text" value="0"> 300 р.</td>
</tr>
</table>
</div>

<div id="programming">
<p><strong>Программирование:</strong></p>
<p>Система управления сайтом (от 4000 р.) <br>
<span>При выборе CMS вы сможете выбрать какую конкретно CMS использовать.</span></p>

<p><select id="cms_radio">
<option value="0">Не использовать</option>
<option value="4000">CMS jADM (4000 р.)</option>
<option value="12000">Amiro.CMS: Корпоративный (12000 р.)</option>
<option value="6000">Joomla! (6000 р.)</option>
<option value="23000">1С-Битрикс: Корпоративный (23000 р.)</option>
<option value="0">Другая (в зависимости от сложности)</option>
</select></p>

<p><input type="checkbox" name="" value="1000">Форма отправки писем (1000 р.) <br>
<span>Установка простой формы отправки писем или заявок посетителей. Простая форма содержит до 5 полей для ввода текста (Ф.И.О. отправителя, контактный телефон, e-mail, дополнительная информация и т.п.). Сообщение приходит на электронную почту в текстовом формате. Позволяет привести запросы посетителей к единой форме и избежать СПАМа.</span></p>

<p><input type="checkbox" name="" value="3000">Лента новостей (3000 р.) <br>
<span>Лента новостей с автоматической разбивкой по страницам, сортировкой по дате, возможностью самостоятельно добавлять, редактировать, удалять новости, вывод необходимого количества последних новостей на главную страницу, новости автоматически отображаются по 10 новостей на страницу с возможностью посмотреть новость более подробно, внизу идут ссылки 1, 2, 3... на страницы архива новостей.</span></p>

<p><input type="checkbox" name="" value="6000">Лента RSS (6000 р.) <br>
<span>Подключение новостной ленты сайта к RSS-каналу. На сайте размещается скрипт, генерирующий список новостей в формате RSS для всех желающих подписаться, или позволяющий подключать и выводить новости сторонних сайтов</span></p>

<p><input type="checkbox" name="" value="8000">Портфолио (8000 р.) <br>
<span>Портфолио позволяет размещать примеры выполненных работ в структурированном виде.</span></p>

<p><input type="checkbox" name="" value="4000">Фотогалерея (4000 р.) <br>
<span>Данный модуль предоставляет возможность выводить фотографии и изображения в автоматическом режиме, менять фон страницы при просмотре фотографии, голосовать за фотографию, просматривать лидеров голосования.</span></p>

<p><input type="checkbox" name="" value="9000">Поиск по сайту (9000 р.) <br>
<span>Модуль поиска совпадений по словам и фразам на страницах сайта.</span></p>
</div>';}
}
?>


В зависимости от переданного элемента option, загружается форма. Почти все поля input будут находиться в каждой форме. Каждый тип будет иметь свой обработчик.
inputCel может быть несколько. Атрибут name в них самый важный. В нем показывается стоимость за 1. В атрибуте value находится стоимость модуля.
Установим обработчик, который все приведет в действие. И так, создаем JavaScript файл scripts.js и вместе с фреймворком jQuery подключаем его к index.html:


<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="scripts.js"></script>


Пишем:


$(document).ready(function() {
 $("#type_site").change(function() {
   var typeOfSite = $("#type_site :selected").val(),
       formOftype = $("#config_site");

   /* Обнуляем общую и сумму с НДС в поле вывода */
   $("#summ span").text("0");
   $("#summ_nds span").text("0");

   /* Выбираем соответствующую форму из файла */
   formOftype.load("fullform.php",{option:typeOfSite});


После загрузки формы, обрабатываем данные:


/* Выбираем все чекбоксы которые были подгружены, в этом нам поможет функция live */
formOftype.live("change",function() {
 /* При проведении действий пересчитываем сумму в зависимости от выбраных чекбоксов */
 var totalSum = 0, /* Полную сумму сначала приравниваем к нулю */
     totalSumNDS = 0,
     choiceCMS = parseInt($("#cms_radio :selected").val());

 /* Приплюсовываем сумму стоимости CMS */
 totalSum += choiceCMS;

 /* Каждое поле ввода проверяем на введеное значение, если больше нуля то считаем его */
 $("#inputCell").each(function() {
       var inputCell = parseInt($("#inputCell").val()) * parseInt($("#inputCell").attr("name"));
       totalSum += inputCell;});


Поскольку форма подгружается динамически, то и появляются новые элементы DOM, которые нужно обработать функцией live.
Дальше создаются две переменные для хранения окончательных сумм НДС и не только. В третьей переменной заносится стоимость выбранной CMS, которую нужно сразу сложить с общей суммой.
Для перебора всех полей ввода используется функция each с идентификатором inputCell, и в цикле, с помощью команды parseInt перемножаем переведенные в целые значения атрибуты name и value каждого поля.
Дальше обрабатываем все отмеченные чекбоксы:


/* Пересчитываем все чекбоксы которые отмечены галочкой*/
$(this + "input[name=''] :checked").each(function() {
 totalSum += parseInt($(this).val());
});


И выводим суммы:


/* Подсчет и вывод итоговой суммы с НДС и без */
  totalSumNDS = totalSum * 1.18 ;
  $("#summ span").text(totalSum);
  $("#summ_nds span").text(totalSumNDS);
  });
 });
});


Категория: JQuery, PHP Теги: 

Популярные записи:

Отображение содержимого последнего сообщения Отображение содержимого последнего сообщения
Правильный адрес URL в закладках Правильный адрес URL в закладках
Loginza – модуль авторизации на PHP Loginza – модуль авторизации на PHP
Функции PHP взаимодействующие с Twitter Функции PHP взаимодействующие с Twitter

Оставить комментарий или два

Отправить коментарий

Test

Яндекс.Метрика