Сколько будет стоить свадьба?

В данном уроке я покажу как сделать простой калькулятор с одной формой. В данном уроке есть некоторые отличия от предыдущего калькулятора следующими моментами:

  1. Мы не используем функцию live для изменения DOM-структуры;
  2. Наша форма полностью готова к отправке (кнопку всегда можете добавить сами);
  3. Форма считает не только итоговую сумму, но и суммы по позициям и выводит их на экран.

Для начала взглянем на саму форму и рассмотрим ее особенности:

Обратите внимание на то, что каждый элемент формы, независимо от его типа, имеет идентификатор вида pos_номер. Это нам поможет в написании кода jQuery. Так же обратите внимание на то, что смежные ячейки для каждого пункта имеют так же идентификаторы вида pos_номер_price и pos_номер_count. В pos_номер_price у нас будет храниться стоимость по позиции за единицу, а в pos_номер_count выводиться итоговая сумма по позиции.

Так же не забываем подключить к странице jQuery. Без него у нас ничего не получится. Сразу стоит сказать, что я не буду делать различные проверки на введенные пользователем данные в текстовые поля дабы не засорять код лишней информацией. На сайте подобных уроков достаточно. Мы же приступаем к нашему коду:

$(document).ready(function() {
	//Немного оформления в стиле зебры
	$("#calculate").find("tr:odd").css({"background":"#fbdd59", "opacity":"0.8"});
	
	//Калькулятор
	$("#tableSelect").change(function() {
		var totalSum = 0;
		
		$("input[id^='pos'], select[id^='pos']").each(function() {
			var idElement = "#"+$(this).attr("id"), //Получаем id элемента
				priceField = parseInt($(idElement+"_price").text()), //Стоимость позиции
				countField = parseInt($(this).val()); //значение элемента
			
			$(idElement+"_count").text(priceField * countField); //Выводим сумму по позиции
			totalSum += priceField * countField;
		});
		$("#count_price span").text(totalSum);
	});
});

На строчку дизайна не обращаем внимания и сразу приступаем к изучению кода. В первой строке указываем то, что мы обрабатываем любые изменения в таблице tableSelect. Полную сумму сразу же приравниваем к 0.

А теперь смотрим внимательно - $("input[id^='pos'], select[id^='pos']").each позволяет для каждого select и input у которых id начинается на pos выполнить соответствующие действия и уже внутри функции each мы указываем, то что мы хотим сделать. Для начала задаем переменные:

  1. idElement = "#"+$(this).attr("id") - создаем переменную idElement, которая нам позволит определять смежные поля с родственными идентификаторами.
  2. priceField = parseInt($(idElement+"_price").text()) - получаем стоимость по позиции из ячейки с родственными идентификатором и переводим текст находящийся в ней в число.
  3. countField = parseInt($(this).val()) - получаем значение введенное пользователем и так же переводим его в число

Дальше все просто. Нам нужно в поле Сумма по позиции вывести итоговое число, а так же обновить общую стоимость.

$(idElement+"_count") - позволяет нам определить в какую ячейку вписывать значение, а строчка ниже обновляет итоговую сумму на Сумму по позиции. И самая последняя строка позволяет ее вывести на экран.

Вот собственно и все. Так же в эту форму можно добавить и радиокнопки и группы флажков. Главное соблюдать нумирацию при формировании таблицы и элементов формы, тогда проблем возникнуть не должно.


Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/uwxjl8wY9uQ/lessons.php

Читать комменты и комментировать

Добавить комментарий / отзыв



Защитный код
Обновить

Сколько будет стоить свадьба? | | 2012-06-19 12:08:27 | | Статьи Web-мастеру | | В данном уроке я покажу как сделать простой калькулятор с одной формой. В данном уроке есть некоторые отличия от предыдущего калькулятора следующими моментами:Мы не используем функцию live для | РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
 
Поделиться с друзьями: