Ширина/ширина материала*высота(высота в метрах квадратных)*цена
Как может быть высота в квадратных метрах? И потом где фигурируют эти данные -
Погонный метр это ширина рулона, они бывают 0,75, 1,3, 1,5 метра.? Ведь вместо них в data-param от макс. 1.4 до мин. 0.95 - это что такое? Причем это потом присваивается переменным с какими-то "дикими" именами не понятно о чем говорящими - paramValuePol, paramValueSteny
( (Ширина оклеиваемой поверхности / ширина материала) * высота оклеиваемой поверхности ) - это получили длину в метрах. Правда все мы знаем, что тютя в тютю обои обрезать не получится, так как придется выравнивать их по рисунку, а не там где отрезал, там и срослось.
Но как бы то ни было посчитали длину, посчитали правильно?
Теперь чтобы получить цену, нужно знать единицу цены за 1 метр каждого из материалов.
Вот эти параметры - ширина материала, цена за 1 метр и должны содержать в себе элементы, и лучше это делать выпадающим списком, а не ul + li. Это можно использовать кастомизированный список, в котором для красоты пользователю подсовывают его "заместителя" ul + li, но "в тени" работает все таки список. А он в значениях своих должен содержать не цены или ширину материала, а идентификатор материала, ибо как не считай на клиенте, а окончательный расчет всегда за сервером, не зависимо от того что там на клиенте считалось.
Допустим, для примера, здесь опции содержат параметр, в котором указана ширина материала и цена за метр:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style>
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script>
$(function() {
//в полях ввода только цифры и без ведущего нуля
//если можно вводить не целые значения, то надо разрешить ввод точки или запятой
$('input').keyup(function() {
this.value = this.value.replace(/^0|\D/,'')
});
//расчет
$('button').click(function() {
var W = $('#width_area').val(), H = $('#height_area').val(), p = $('#wallpaper'), v = p.val(), d = p.find(':selected').data('check');
if(!W || !H || !v) {
alert('Не выбраны параметры!')
return
}
//считаем по-детально
$('#details').html('Ширина материала: ' + d[0] + ' м<br>' +
'Цена за метр: ' + d[1] + ' руб.<br>' +
'Требуется полос: ' + Math.round(W / d[0]) + ' шт.<br>' +
'Всего метров: ' + Math.round((W / d[0]) * H) + ' м<br>' +
'Итоговая цена: ' + Math.round((W / d[0]) * H * d[1]) + ' руб.');
})
});
</script>
</head>
<body>
Материал:
<form autocomplete="off">
<select id="wallpaper" name="" required="">
<option value="">Выберите материал...</option>
<optgroup label="Бумажные фотообои с ПВХ покрытием - ширина 1.3 м">
<option value="121" data-check="[1.3,25]">Текстура "под иней"</option>
<option value="234" data-check="[1.3,20]">Текстура "под древний папирус"</option>
<option value="123" data-check="[1.3,32]">Текстура "живопись маслом"</option>
<option value="11" data-check="[1.3,40]">Текстура "песок"</option>
</optgroup>
<optgroup label="Флизелиновые фотообои - ширина 0.75 м">
<option value="324" data-check="[0.75,55]">Текстура "венецианская штукатурка"</option>
<option value="333" data-check="[0.75,40]">Текстура "штукатурка"</option>
<option value="434" data-check="[0.75,35]">Текстура "штукатурка"</option>
</optgroup>
</select>
<hr />
Ширина поверхности:
<input id="width_area" name="" required="" />
<hr />
Высота поверхности:
<input id="height_area" name="" required="" />
</form>
<hr />
<button>Расчитать цену</button>
<hr />
Детализация:
<div id="details"></div>
</body>
</html>