24.12.2014, 17:44
|
Новичок на форуме
|
|
Регистрация: 20.12.2014
Сообщений: 6
|
|
Проблема с форматированием числа в калькуляторе
Собственно, есть такой скрипт:
$(function() {
$( "#slider-range-max" ).slider({
range: "max",
min: 500000,
max: 50000000,
value: 50000,
step: 500000,
slide: function( event, ui ) {
$( "#amount" ).val( ui.value );
calc();
}
});
$( "#amount" ).val( $( "#slider-range-max" ).slider( "value" ) );
});
$(function() {
$( "#slider-range-max2" ).slider({
range: "max",
min: 6,
max: 48,
value: 12,
slide: function( event, ui ) {
$( "#amount2" ).val( ui.value );
calc();
}
});
$( "#amount2" ).val( $( "#slider-range-max2" ).slider( "value" ) );
});
function calc(par){
amount = document.cl_form.amount.value;
document.cl_form.amount.value = document.cl_form.amount.value.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ');
amount2 = document.cl_form.amount2.value;
//var summ;
summ = (Number(amount) + 0.01 * Number(amount) * Number(amount2))/Number(amount2);
summ2 = Number(amount) + 0.01 * Number(amount) * Number(amount2);
summ = summ.toFixed(0);
summ2 = summ2.toFixed(0);
summ = summ.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ');
summ2 = summ2.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ');
document.cl_form.summ.value=summ;
document.cl_form.summ.value=summ2;
//document.getElementById("amounttd").innerHTML=amount;
//document.getElementById("amount2td").innerHTML=amount2;
document.getElementById("summ").innerHTML=summ;
document.getElementById("summ2").innerHTML=summ2;
return false;
}
Посмотреть в работе можно тут http://rezerv.yukastudio.ru/ - калькулятор расчета займа. Собственно, проблема в том, что он считает сумму, если двигать верхний ползунок, при передвижении нижнего в поле, где должно отображаться значение суммы, отображается NaN. Причем самое интересное, если убрать форматирование верхнего поля у первого ползунка
document.cl_form.amount.value = document.cl_form.amount.value.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ');
эта строка, все прекрасно работает.
Кто-нибудь в курсе, как решить эту проблему, или где я накосячил?
|
|
24.12.2014, 18:42
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
Yu.Ka.,
$(function() {
var range = [5E4, 12];
$("#slider-range-max").slider({
range: "max",
min: 5E4,
max: 5E6,
value: 5E4,
step: 5E4,
slide: function(event, ui) {
$("#amount").val(("" + ui.value).replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, "$1 "));
range[0] = +ui.value;
calc()
},
change: function(event, ui) {
$("#amount").val(("" + ui.value).replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, "$1 "));
range[0] = +ui.value;
calc()
}
});
$("#slider-range-max2").slider({
range: "max",
min: 6,
max: 48,
value: 12,
slide: function(event, ui) {
$("#amount2").val(ui.value);
range[1] = +ui.value;
calc()
},
change: function(event, ui) {
$("#amount2").val(ui.value);
range[1] = +ui.value;
calc()
}
});
$("#slider-range-max").slider("option", "value", 5E4);
$("#slider-range-max2").slider("option", "value", 12);
function calc(par) {
var summ = (range[0] + .01 * range[0] * range[1]) / range[1],
summ2 = range[0] + .01 * range[0] * range[1];
summ = summ.toFixed(0);
summ2 = summ2.toFixed(0);
summ = summ.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, "$1 ");
summ2 = summ2.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, "$1 ");
document.getElementById("summ").innerHTML = summ;
document.getElementById("summ2").innerHTML = summ2;
return false
}
});
|
|
24.12.2014, 19:02
|
Новичок на форуме
|
|
Регистрация: 20.12.2014
Сообщений: 6
|
|
Огромнейшее пасибище
Огромнейшее спасибо!!!
|
|
24.12.2014, 19:05
|
Новичок на форуме
|
|
Регистрация: 20.12.2014
Сообщений: 6
|
|
Еще такой вопрос, если честно, нигде не встречал такого, вот хочу поинтересоваться, реально ли это вообще, что бы миллионы, писались не так 1 000 000 а так 1 млн.
|
|
24.12.2014, 19:15
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
Yu.Ka.,
самое простое
summ2 = summ2.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, "$1 ").replace(/000 000$/, "млн.");
|
|
24.12.2014, 19:23
|
Новичок на форуме
|
|
Регистрация: 20.12.2014
Сообщений: 6
|
|
Не так не хотит почему то
|
|
24.12.2014, 19:35
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
Yu.Ka.,
alert("7000000".replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, "$1 ").replace(/000 000$/, "млн."))
|
|
24.12.2014, 19:38
|
Новичок на форуме
|
|
Регистрация: 20.12.2014
Сообщений: 6
|
|
Да понял уже, что он только нули режет, теперь думаю, как туда весь диапазон влепить от 000 000 до 999 999 ))
|
|
24.12.2014, 19:45
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
Yu.Ka.,
так ?
summ2.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, "$1 ").replace(/(\d{3} \d{3})$/, "млн. $1");
|
|
24.12.2014, 19:56
|
Новичок на форуме
|
|
Регистрация: 20.12.2014
Сообщений: 6
|
|
Спасибо, усе получилось
|
|
|
|