18.07.2013, 11:37 | #1 |
Участник
|
Нужна помощь со JS скриптом
Добрый день!
У меня была задача реализовать такой вот мини калькулятор: Пенсионный фонд сумма * % (3 или 4 или 5) / 100 = результат 3(%) до 189 255,00 4(%) от 189 255,01 до 332 630,00 5(%) от 332 630,01 Написал код (на самом деле это одно из моих первых творений). Все ок, но последнее условие не отрабатывает 5(%) от 332 630,01 все сумы больше 332 630,00 считает как для 4%, а должно 5%. Опыта в программировании мало, не знаю в чем проблема. Неправильно написан срипт? function calculator () { Xrm.Page.getAttribute("new_costauto").setSubmitMode("always"); Xrm.Page.getAttribute("new_pensionlevy").setSubmitMode("always"); if (Xrm.Page.data.entity.attributes.get("new_costauto").getValue() !=null) { var summa = 0; var stoimost = Xrm.Page.data.entity.attributes.get("new_costauto").getValue(); if (stoimost <= 189255.00) { var summa = ((stoimost*3)/100); Xrm.Page.data.entity.attributes.get("new_pensionlevy").setValue(summa); Xrm.Page.getControl("new_pensionlevy").setDisabled(true); } else if ( stoimost >= 189255.01) { var summa = ((stoimost*4)/100); Xrm.Page.data.entity.attributes.get("new_pensionlevy").setValue(summa); Xrm.Page.getControl("new_pensionlevy").setDisabled(true); } else if ( stoimost <= 332630.00) { var summa = ((stoimost*4)/100); Xrm.Page.data.entity.attributes.get("new_pensionlevy").setValue(summa); Xrm.Page.getControl("new_pensionlevy").setDisabled(true); } else if (stoimost > 332631.01) { var summa = ((stoimost*5)/100); Xrm.Page.data.entity.attributes.get("new_pensionlevy").setValue(summa); Xrm.Page.getControl("new_pensionlevy").setDisabled(true); } } } |
|
18.07.2013, 12:09 | #2 |
Участник
|
Все, спасибо, вопрос исчерпан. Нашел в чем проблема
|
|
18.07.2013, 13:30 | #3 |
Участник
|
Тут есть еще 1 ошибка
X++: else if (stoimost > 332631.01) нужно написать X++: else if (stoimost > 332631.00) и зачем в каждом if повторять строки X++: Xrm.Page.data.entity.attributes.get("new_pensionlevy").setValue(summa); Xrm.Page.getControl("new_pensionlevy").setDisabled(true); Они же должны выполниться в любом случае, их лучше написать 1 раз в конце. Последний раз редактировалось Anros; 18.07.2013 в 13:32. |
|
18.07.2013, 13:50 | #4 |
Участник
|
Спасибо, подкорректировал, код стал приятней выглядеть
function calculator () { Xrm.Page.getAttribute("new_costauto").setSubmitMode("always"); Xrm.Page.getAttribute("new_pensionlevy").setSubmitMode("always"); var summa = 0; var stoimost = Xrm.Page.data.entity.attributes.get("new_costauto").getValue(); if (Xrm.Page.data.entity.attributes.get("new_costauto").getValue() !=null) { if (stoimost <= 189255.00) { var summa = ((stoimost*3)/100); } else if (( stoimost >= 189255.01) && (stoimost <= 332630.00)) { var summa = ((stoimost*4)/100); } else if (stoimost >= 332630.01) { var summa = ((stoimost*5)/100); } Xrm.Page.data.entity.attributes.get("new_pensionlevy").setValue(summa); Xrm.Page.getControl("new_pensionlevy").setDisabled(true); } } |
|
18.07.2013, 14:11 | #5 |
Участник
|
А можно еще вопрос: почему не очищаются поля?
Я убираю значение с одного поля и хочу чтобы другие поля очищались. Посмотрел примеры, вроде должно работать, что не так пока не могу понять Вот пример кода: if (Xrm.Page.getAttribute("new_dvigatel").getValue() == null) { Xrm.Page.data.entity.attributes.get("new_transportfee").setValue(null); Xrm.Page.data.entity.attributes.get("new_engine").setValue(null); Xrm.Page.data.entity.attributes.get("new_summazb").setValue(null); Xrm.Page.getControl("new_transportfee").setDisabled(false); Xrm.Page.getControl("new_engine").setDisabled(false); Xrm.Page.getControl("new_summazb").setDisabled(false); } |
|
18.07.2013, 14:23 | #6 |
Участник
|
|
|