Проблема с форматированием числа в калькуляторе
Собственно, есть такой скрипт:
$(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 '); эта строка, все прекрасно работает. Кто-нибудь в курсе, как решить эту проблему, или где я накосячил? |
Yu.Ka.,
:cray: $(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 } }); |
Огромнейшее пасибище
Огромнейшее спасибо!!!
|
Еще такой вопрос, если честно, нигде не встречал такого, вот хочу поинтересоваться, реально ли это вообще, что бы миллионы, писались не так 1 000 000 а так 1 млн.
|
Yu.Ka.,
самое простое summ2 = summ2.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, "$1 ").replace(/000 000$/, "млн."); |
Не так не хотит почему то ;)
|
Yu.Ka.,
alert("7000000".replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, "$1 ").replace(/000 000$/, "млн.")) |
Да понял уже, что он только нули режет, теперь думаю, как туда весь диапазон влепить от 000 000 до 999 999 ))
|
Yu.Ka.,
так ? summ2.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, "$1 ").replace(/(\d{3} \d{3})$/, "млн. $1"); |
Спасибо, усе получилось ;)
|
Часовой пояс GMT +3, время: 10:24. |