18.08.2017, 04:45
|
Новичок на форуме
|
|
Регистрация: 18.08.2017
Сообщений: 4
|
|
Два условия в расчете в калькуляторе
Добрый день.
Прошу помощи с калькулятором на сайте.
Сейчас работает по принципу:
Если стоит галочка,
то сумма1+15%,
иначе сумма2+15%
Необходимо добавить еще одно условие, при котором, если 15% меньше 2500, то прибавляем не 15%, а 2500.
То есть должно получиться:
Если стоит галочка,
то Если сумма1+15% < сумма1+2500,
то сумма1+2500,
иначе Если сумма2+15% < сумма2+2500,
то сумма2+2500
if ( $('#id_16 input').prop('checked') ) result_proc =(parseFloat($('#id_1 option:selected').val())+parseFloat($('#id_8 option:selected').val())+parseFloat($('input:radio[name=radio_9]:checked').val())+parseFloat($('input:radio[name=radio_10]:checked').val())+parseFloat($('#id_7 option:selected').val())+parseFloat($('#id_16 input').val()))+(parseFloat($('#id_1 option:selected').val())+parseFloat($('#id_8 option:selected').val())+parseFloat($('input:radio[name=radio_9]:checked').val())+parseFloat($('input:radio[name=radio_10]:checked').val())+parseFloat($('#id_7 option:selected').val())+parseFloat($('#id_16 input').val()))*0.15; else result_proc =(parseFloat($('#id_1 option:selected').val())+parseFloat($('#id_8 option:selected').val())+parseFloat($('input:radio[name=radio_9]:checked').val())+parseFloat($('input:radio[name=radio_10]:checked').val())+parseFloat($('#id_7 option:selected').val()))+(parseFloat($('#id_1 option:selected').val())+parseFloat($('#id_8 option:selected').val())+parseFloat($('input:radio[name=radio_9]:checked').val())+parseFloat($('input:radio[name=radio_10]:checked').val())+parseFloat($('#id_7 option:selected').val()))*0.15
Последний раз редактировалось romanmysin, 19.08.2017 в 11:43.
|
|
18.08.2017, 07:56
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,795
|
|
romanmysin, а в чем у вас сложность возникла?
|
|
18.08.2017, 20:42
|
Новичок на форуме
|
|
Регистрация: 18.08.2017
Сообщений: 4
|
|
скорее всего не так где-то в деталях кода - калькулятор изначально делал в конфигураторе, потом вносил в него изменения, но второе условие сейчас не получается добавить.
посмотрите, пжлста, вот такой получился последний вариант с двумя условиями.
скорее какие-то скобки или ; или знак < не так я ставлю ...
if ( $('#id_16 input').prop('checked') ) result_proc =if ((parseFloat($('#id_1 option:selected').val())+parseFloat($('#id_8 option:selected').val())+parseFloat($('input:radio[name=radio_9]:checked').val())+parseFloat($('input:radio[name=radio_10]:checked').val())+parseFloat($('#id_7 option:selected').val())+parseFloat($('#id_16 input').val()))*0,15<2500) result_proc =(parseFloat($('#id_1 option:selected').val())+parseFloat($('#id_8 option:selected').val())+parseFloat($('input:radio[name=radio_9]:checked').val())+parseFloat($('input:radio[name=radio_10]:checked').val())+parseFloat($('#id_7 option:selected').val())+parseFloat($('#id_16 input').val()))+2500; else (parseFloat($('#id_1 option:selected').val())+parseFloat($('#id_8 option:selected').val())+parseFloat($('input:radio[name=radio_9]:checked').val())+parseFloat($('input:radio[name=radio_10]:checked').val())+parseFloat($('#id_7 option:selected').val())+parseFloat($('#id_16 input').val()))+(parseFloat($('#id_1 option:selected').val())+parseFloat($('#id_8 option:selected').val())+parseFloat($('input:radio[name=radio_9]:checked').val())+parseFloat($('input:radio[name=radio_10]:checked').val())+parseFloat($('#id_7 option:selected').val())+parseFloat($('#id_16 input').val()))*0,15; else if ((parseFloat($('#id_1 option:selected').val())+parseFloat($('#id_8 option:selected').val())+parseFloat($('input:radio[name=radio_9]:checked').val())+parseFloat($('input:radio[name=radio_10]:checked').val())+parseFloat($('#id_7 option:selected').val()))*0,15<2500) result_proc =(parseFloat($('#id_1 option:selected').val())+parseFloat($('#id_8 option:selected').val())+parseFloat($('input:radio[name=radio_9]:checked').val())+parseFloat($('input:radio[name=radio_10]:checked').val())+parseFloat($('#id_7 option:selected').val()))+2500; else (parseFloat($('#id_1 option:selected').val())+parseFloat($('#id_8 option:selected').val())+parseFloat($('input:radio[name=radio_9]:checked').val())+parseFloat($('input:radio[name=radio_10]:checked').val())+parseFloat($('#id_7 option:selected').val()))+(parseFloat($('#id_1 option:selected').val())+parseFloat($('#id_8 option:selected').val())+parseFloat($('input:radio[name=radio_9]:checked').val())+parseFloat($('input:radio[name=radio_10]:checked').val())+parseFloat($('#id_7 option:selected').val()))*0,15
Последний раз редактировалось romanmysin, 23.02.2019 в 18:37.
|
|
18.08.2017, 23:30
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,795
|
|
romanmysin, может так?
var summ=0,//сумма
data={//айдишники полей
options:[1,8,7],//опции
radio:[9,10]//радио
input:[]//инпуты
},
selectors={
options:'#id_%id% option:selected',
radio:'input[type="radio"][name=radio_%id%]:checked',
input:'#id_%id% input'
};
percent=15,//надбавка в процентах
min_percent_value=2500;//минимальная надбавка
if($('#id_16 input').prop('checked'))
data.input.push(16);
for(var i in data){
if(!data.hasOwnProperty(i))
continue;
for(var j=0;j<data[i].length;j++){
summ+=parseFloat($(selectors[i].replace('%id%',data[i][j])).val());
};
};
var plus=summ*(percent/100);//Получаю значение надбавки
plus=plus>=min_percent_value?plus:min_percent_value;//Если надбавка меньше минимальной надбавки, то надбавка равна минимальной...
result_proc=summ+plus;
Upd. Псевдо класс «radio» разве существует?
Последний раз редактировалось Nexus, 18.08.2017 в 23:35.
|
|
19.08.2017, 01:42
|
Новичок на форуме
|
|
Регистрация: 18.08.2017
Сообщений: 4
|
|
спасибо за ответ, но не сработало.
решил модернизацией своего кода с помощью того же конструктора.
Если ( галочка ) То
Если ( № 1 × 0.15 < 2500 ) То
Результат = № 1 + 2500
Иначе
Результат = № 1 + № 1 × 0.15
Иначе Если ( № 2 × 0.15 < 2500 ) То
Результат = № 2 + 2500
Иначе
Результат = № 2 + № 2 × 0.15
if ( $('#id_3 input').prop('checked') ) if ( parseFloat($('#id_1 option:selected').val())*0.15<2500 ) result_proc =parseFloat($('#id_1 option:selected').val())+2500; else result_proc =parseFloat($('#id_1 option:selected').val())+parseFloat($('#id_1 option:selected').val())*0.15; else if ( parseFloat($('#id_2 option:selected').val())*0.15<2500 ) result_proc =parseFloat($('#id_2 option:selected').val())+2500; else result_proc =parseFloat($('#id_2 option:selected').val())+parseFloat($('#id_2 option:selected').val())*0.15
Последний раз редактировалось romanmysin, 19.08.2017 в 11:42.
|
|
19.08.2017, 09:52
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,795
|
|
romanmysin, в вашем "итоговом коде" используются совершенно другие поля.
Ну да ладно, работает как нужно и фиг с ним.
|
|
19.08.2017, 10:30
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,123
|
|
romanmysin,
[js]
... ваш код...
[/js]
О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
|
|
19.08.2017, 11:41
|
Новичок на форуме
|
|
Регистрация: 18.08.2017
Сообщений: 4
|
|
да, переменных меньше, т.к. воспроизводить заново полностью с бОльшим числом переменных было тяжело и объединил суммы в одну. Нужно было для примера - как и куда вставляются условия.
спасибо Nexus и Рони.
|
|
19.08.2017, 11:52
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от рони
|
О том, как вставить в сообщение
|
Лучше не стало.
|
|
19.08.2017, 11:56
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,123
|
|
laimas,
тут даже http://jsbeautifier.org/ бессилен!
|
|
|
|