Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Калькулятор услуг (https://javascript.ru/forum/misc/78797-kalkulyator-uslug.html)

joyandjoy 06.11.2019 13:17

Нет :-? Размер 30*30, тип3, выходит 400, рамка 2, должно получится 750, калькулятор считает 700.

laimas 06.11.2019 13:22

Цитата:

Сообщение от joyandjoy
должно получится 750

С чего вдруг?

Размер 30*30 - это индекс 2. Далее по вашим ценам:
Для типа 3 это значение из массива: [300,350,400][2] = 400.
Для рамки 2 это значение из массива: [200,250,300][2] = 300.
400 + 300 = 700

laimas 06.11.2019 13:31

А, да, надо было цены из таблицы вставлять в массивы не построчно, а брать из столбцов. Ну это не проблема, сейчас исправим.

joyandjoy 06.11.2019 13:33

Берм размер 20*20, тип 3, цена 300, рамку 2, цена 550, а калькулятор выводит 500.

joyandjoy 06.11.2019 13:33

А ок :)

laimas 06.11.2019 13:35

Исправлено, теперь верно?

joyandjoy 06.11.2019 13:41

Вроде как да :) Спасибо. Еще такой момент остался, если пользователь не выбрал рамку или упаковку, как отобразить текущую цену?

laimas 06.11.2019 13:48

Цитата:

Сообщение от joyandjoy
Еще такой момент остался, если пользователь не выбрал рамку или упаковку, как отобразить текущую цену?

А как он может не выбрать рамку, если у вас этот список обязателен для выбора? Упаковка понятно, она не обязательна, поэтому в расчете и проверяется значение списка, и по результату берется либо значение из массива, либо 0. В противном случае, при обязательном выборе всех списков, такая проверка не нужна.

laimas 06.11.2019 13:53

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

$('#order').on('change', 'select', function(e) {
    var f = e.delegateTarget, p = $('select', f), v = 0, size = p.eq(0).val()-1;
    $.each(p.slice(1), function() {
        v += this.value ? $(this).children(':selected').data('price')[size] : 0
    });
    f.total.value = v;
});

joyandjoy 06.11.2019 13:55

Цитата:

Сообщение от laimas (Сообщение 514981)
А как он может не выбрать рамку, если у вас этот список обязателен для выбора? Упаковка понятно, она не обязательна, поэтому в расчете и проверяется значение списка, и по результату берется либо значение из массива, либо 0. В противном случае, при обязательном выборе всех списков, такая проверка не нужна.

Цитата:

Сообщение от joyandjoy (Сообщение 514962)
есть 4 пункта, все 4 надо выбрать (кроме последних двух, они не обязательны, но если выбираются, то нужно добавлять к основной сумме).

Цитата:

Сообщение от joyandjoy (Сообщение 514972)
Выбор рамки (необязательно) - Рамка2

Выбор упаковки (необязательно) - Зеленая

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


Часовой пояс GMT +3, время: 03:32.