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

Ширина/ширина материала*высота(высота в метрах квадратных)*цена

Как может быть высота в квадратных метрах? И потом где фигурируют эти данные - Погонный метр это ширина рулона, они бывают 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>

Последний раз редактировалось laimas, 21.08.2015 в 06:49.
Ответить с цитированием