|
|
|
| Всем привет! Ребят, помогите оптимизировать код... написал небольшой скрипт - кредитный калькулятор, правда, не до конца... хочу чтоб вы покритиковали код, подсказали, как изящнее решать проблемы итд итп...
скрипт рабочий, кстати))
буду очень признателен за толковые советы...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Кредитный калькулятор. Разработка</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link type="text/css" href="../../themes/base/jquery.ui.all.css" rel="stylesheet" />
<script type="text/javascript" src="../../jquery-1.4.2.js"></script>
<script type="text/javascript" src="../../ui/jquery-ui-1.8.4.custom.min.js"></script>
<script type="text/javascript" src="../../ui/jquery.ui.widget.js"></script>
<script type="text/javascript" src="../../ui/jquery.ui.mouse.js"></script>
<script type="text/javascript" src="../../ui/jquery.ui.slider.js"></script>
<link type="text/css" href="../demos.css" rel="stylesheet" />
<style>
dl{
clear:both
}
dt{
float:left;
width:150px
}
dd input,dd div{
float:left
}
.slider{
width:300px;
position:relative;
left:30px;
top:6px
}
.slider span{
position:absolute
}
p#max{
font-size:70px
}
</style>
<script type="text/javascript">
$(function() {
//Слайдеры - объявление и получение значения в инпут
$("#slider0").slider({
animate:true,
min: 8000,
max: 500000,
value: 20000,
slide: function(event, ui) {
$("#income").val(ui.value);
income = $("input#income").val() * 6;
paying = (income * insurance * time/(1 + percent/100)).toFixed(2);
$("p#max").text(paying);
}
});
$("#income").val($("#slider0").slider("value"));
$("#slider1").slider({
animate:true,
min: 1,
max: 60,
value: 6,
slide: function(event, ui) {
$("#time").val(ui.value);
time = $("input#time").val();
if($("input#insurance").is(":checked")){
if($("input#time").val() <= 12){
percent = 17;
} else if($("input#time").val() <= 24) {
percent = 18;
} else {
percent = 19;
}
} else {
if($("input#time").val() <= 12){
percent = 18;
} else if($("input#time").val() <= 24) {
percent = 19;
} else {
percent = 20;
}
};
paying = (income * insurance * time/(1 + percent/100)).toFixed(2);
$("p#max").text(paying+" | "+insurance+" | "+percent);
}
});
$("#time").val($("#slider1").slider("value"));
$("#slider2").slider({
animate:true,
range: "min",
min: 30000,
max: 1000000,
value: 30000,
slide: function(event, ui) {
$("#sum").val(ui.value);
}
});
$("#sum").val($("#slider2").slider("value"));
//Определение переменных при загрузке страницы
insurance = $("input#insurance").is(":checked") ? (0.6) : (0.5);
income = $("input#income").val() * 6;
time = $("input#time").val();
percent = $("input#insurance").is(":checked") ? 17 : 18;
paying = (income * insurance * time/(1 + percent/100)).toFixed(2);
$("#sum").val(paying);
$("#slider2").slider({value: paying});
$("p#max").text(paying);
//Слайдеры - изменение положения ползунка при наборе цифр в инпуте
$("dd input").not("#time").keyup(function(){
$(this).next("div").slider({value: $(this).val()});
income = $("input#income").val() * 6;
paying = (income * insurance * time/(1 + percent/100)).toFixed(2);
$("p#max").text(paying);
});
//Слайдер срок кредитования - изменение процентной ставки на значение инпута
$("dd input#time").keyup(function(){
$(this).next("div").slider({value: $(this).val()});
time = $("input#time").val();
if($("input#insurance").is(":checked")){
if($(this).val() <= 12){
percent = 17;
} else if($(this).val() <= 24) {
percent = 18;
} else {
percent = 19;
}
} else {
if($(this).val() <= 12){
percent = 18;
} else if($(this).val() <= 24) {
percent = 19;
} else {
percent = 20;
}
};
paying = (income * insurance * time/(1 + percent/100)).toFixed(2);
$("p#max").text(paying+" | "+insurance+" | "+percent);
});
//Наличие страхования
$("input#insurance").click(function(){
insurance = $("input#insurance").is(":checked") ? 0.6 : 0.5;
paying = (income * insurance * time/(1 + percent/100)).toFixed(2);
$("p#max").text(paying);
});
});
</script>
</head>
<body>
<form id="calculator">
<dl id="row_income">
<dt>Ежемесячный доход, руб.</dt>
<dd>
<input id="income" type="text">
<div id="slider0" class="slider">
<span style="left:-1px;top:-17px">8 000</span>
<span style="left:254px;top:-17px">500 000</span>
</div>
</dd>
</dl>
<dl id="row_time">
<dt>Срок кредитования, мес.</dt>
<dd>
<input id="time" type="text">
<div id="slider1" class="slider"></div>
</dd>
</dl>
<dl id="row_sum">
<dt>Сумма кредита, руб.</dt>
<dd>
<input id="sum" type="text">
<div id="slider2" class="slider"><div class="ui-slider-range ui-slider-range-min ui-widget-header" style="width: 39.6744%; display: block;"></div></div>
</dd>
</dl>
<dl id="row_insurance">
<dt>Страхование жизни</dt>
<dd>
<input id="insurance" type="checkbox">
</dd>
</dl>
<br /><br />
Максимальная сумма кредита: <p id="max"></p>
Ежемесячный платеж <p id="monthly"></p>
</form>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: [ANTI]CheateR
(17.09.2010 в 21:07)
| | Код/скрипт был бы "рабочим", если бы в SRC тегов <SCRIPT> и <LINK> были указаны абсолютные пути.
А так... так Вы выложили бесполезную "фигню".
И, прежде всего, бесполезную для себя.
Ибо нужных Вам откликов не дождётесь. | |
|
|
|
|
|
|
|
для: АЯ
(17.09.2010 в 21:55)
| | не соглашусь с вами...
когда я писал рабочий, я имел ввиду, что скрипт работает-считает в принципе... то есть на локальной машине ошибок нет... нужно лишь подключить необходимые библиотеки...
можно и по этому коду подсказать некоторые моменты, которые можно было сделать иначе... лучше... на другом форуме ответили по делу...
но вот читаю ваши ответы в других темах... вы - молодец)) | |
|
|
|
|
|
|
|
для: [ANTI]CheateR
(24.09.2010 в 14:39)
| | >"нужно лишь подключить необходимые библиотеки"
Как говорится, кому нужно будет, тот и подключит.
Полагаете, мне (или кому-то ещё) - это нужно?
У меня на компе НЕТ ни самой JQuery, и, соответственно, ни единого плагина, который на этой библиотеке "завязан". Не пользую я эти "костыли".
Ну и?
1. Посоветуете мне сходить в яндекс/гугль, найти там ссылку на соответствующую версию JQuery и скачать её?
2. А затем посоветуете мне (и ВСЕМ прочим) опять сходить в яндекс/гугль и поискать там используемый Вам плагин и скачать его?
3. Затем посоветуете мне (и ВСЕМ прочим) переписать пути в SRC скриптов в выложенном Вами коде?
Не до хрена ли "советов", Вам не кажется? :-)
До хрена... потому ответов Вы и не дождались.
Сделали бы Вы всё это САМИ, обязательно получили бы советы/рекомендации...
А так... ищите Форумы, где собираются те, у кого есть очень много свободного времени... | |
|
|
|
|
|
|
|
для: АЯ
(24.09.2010 в 15:36)
| | неееет, вы не поняли меня...
разумеется, если б я хотел, чтоб вы посмотрели этот код в действии я прикрепил бы архив со всеми нужными файлами...
я имел ввиду помощь другого рода... например, использование везде глобальных переменных, возможность использования в некоторых участках кода кэширования выборки... итд итп
для этого ведь достаточного самого исходника?
p.s. вообще, этот код уже переписан - калькулятор работает)) вот только кажется мне, что его можно оптимизировать... эээм, может посмотрите? ))
я думаю, вам будет, что сказать))
http://www.kred-bank.ru/services/private/credit_calc/ | |
|
|
|
|
|
|
|
для: [ANTI]CheateR
(24.09.2010 в 15:48)
| | Пока могу сказать лишь одно - считает Ваш калькулятор неправильно :-)
Простейший пример - кредит на 120 000 рублей на срок 12 месяцев при 18%% годовых
Ежемесячный платёж составляет 11 002 рубля. Знаю точно, ибо сейчас сам выплачиваю.
Ваш же калькулятор при тех же заявленных условиях выдаёт сумму 11 800 руб в месяц, сиречь обманывает заёмщика на 792 рубля в месяц и, соответственно, на 9 с половиной тысяч в год.. | |
|
|
|
|
|
|
|
для: АЯ
(24.09.2010 в 16:53)
| | хм, там подсчет идет такой...
120 000 + 120 000*0,18 = итоговая сумма к возврату... ну и на кол-во месяцев делится...
на самом деле не так? не подскажете как? | |
|
|
|
|
|
|
|
для: [ANTI]CheateR
(24.09.2010 в 17:19)
| | Хмм...
А что, в банке не с кем посоветоваться? :-)
Кредит в сумме 120 000 руб. я взял на 12 месяцев и, положим, обещался вернуть его равными долями ежемесячно, т.е. по 10 тысяч руб в месяц.
Иными словами, я взял у банка:
10 000 руб. - на 1 мес. и должен за их использование 10 000 * 0.18 / 12 * 1 = 150 руб.
10 000 руб. - на 2 мес. и должен за их использование 10 000 * 0.18 / 12 * 2 = 300 руб.
10 000 руб. - на 3 мес. и должен за их использование 10 000 * 0.18 / 12 * 3 = 450 руб.
...
10 000 руб. - на 10 мес. и должен за их использование 10 000 * 0.18 / 12 * 10 = 1 500 руб.
10 000 руб. - на 11 мес. и должен за их использование 10 000 * 0.18 / 12 * 11 = 1 650 руб.
10 000 руб. - на 12 мес. и должен за их использование 10 000 * 0.18 / 12 * 12 = 1 800 руб.
| Будет абсолютно честно, если я так и буду отдавать - 10 150 руб. за первый месяц, 10 300 руб. - за второй ... 11 800 руб. за последний, 12-й месяц - в итоге за 12 мес. я отдам ВЕСЬ кредит 120 000 рублей и ВСЕ проценты в сумме 11 700 рублей.
Но банки пытаются здесь дополнительно заработать и предлагают так называемые "убывающие платежи", когда в первом месяце я отдаю проценты за последний платёж, во втором - за предпоследний и т.д. Сумма процентов та же - 11 700 рублей, но, возвращая их "задом наперёд", я чуть-чуть кредитую банк.
Реально же плачу я ежемесячно "часть кредита"+"проценты за оставшийся долг" РАВНЫМИ СУММАМИ (так называемые "аннуитетные платежи", кои в основном и предлагают наши банки). Остаток моего долга каждый месяц немного больше (чем расписано выше) и, соответственно, оплата за пользование вырастает до суммы 12 024 рубля, что и составит 11 002 рубля вместе с возвратом части кредита ежемесячно.
Формулу для расчёта аннуитетного платежа можно довольно легко вывести. Вернее, она давно выведена - поищите в сети.
-----
Ваш же расчёт годен для случая, когда я взял деньги у банка на целый год и вернул их один раз, через год, со всеми процентами СРАЗУ, единым платежом
120 000 рублей - на 12 мес. и должен за их использование 120 000 * 0.18 = 21 600 рублей
| Но банки у нас деньги так в кредит не дают.
Так дают ссуды.
И не банки.
И не под такую процентную ставку. | |
|
|
|
|
|
|
|
для: АЯ
(24.09.2010 в 18:08)
| | мде, не сталкивался в жизни с кредитами...
отредактировал немного код... http://www.kred-bank.ru/services/private/credit_calc/
жду, что скажут в банке... | |
|
|
|
|