Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.12.2014, 17:44
Новичок на форуме
Отправить личное сообщение для Yu.Ka. Посмотреть профиль Найти все сообщения от Yu.Ka.
 
Регистрация: 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 ');


эта строка, все прекрасно работает.

Кто-нибудь в курсе, как решить эту проблему, или где я накосячил?
Ответить с цитированием
  #2 (permalink)  
Старый 24.12.2014, 18:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

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
    }
});
Ответить с цитированием
  #3 (permalink)  
Старый 24.12.2014, 19:02
Новичок на форуме
Отправить личное сообщение для Yu.Ka. Посмотреть профиль Найти все сообщения от Yu.Ka.
 
Регистрация: 20.12.2014
Сообщений: 6

Огромнейшее пасибище
Огромнейшее спасибо!!!
Ответить с цитированием
  #4 (permalink)  
Старый 24.12.2014, 19:05
Новичок на форуме
Отправить личное сообщение для Yu.Ka. Посмотреть профиль Найти все сообщения от Yu.Ka.
 
Регистрация: 20.12.2014
Сообщений: 6

Еще такой вопрос, если честно, нигде не встречал такого, вот хочу поинтересоваться, реально ли это вообще, что бы миллионы, писались не так 1 000 000 а так 1 млн.
Ответить с цитированием
  #5 (permalink)  
Старый 24.12.2014, 19:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Yu.Ka.,
самое простое
summ2 = summ2.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, "$1 ").replace(/000 000$/, "млн.");
Ответить с цитированием
  #6 (permalink)  
Старый 24.12.2014, 19:23
Новичок на форуме
Отправить личное сообщение для Yu.Ka. Посмотреть профиль Найти все сообщения от Yu.Ka.
 
Регистрация: 20.12.2014
Сообщений: 6

Не так не хотит почему то
Ответить с цитированием
  #7 (permalink)  
Старый 24.12.2014, 19:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Yu.Ka.,
alert("7000000".replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, "$1 ").replace(/000 000$/, "млн."))
Ответить с цитированием
  #8 (permalink)  
Старый 24.12.2014, 19:38
Новичок на форуме
Отправить личное сообщение для Yu.Ka. Посмотреть профиль Найти все сообщения от Yu.Ka.
 
Регистрация: 20.12.2014
Сообщений: 6

Да понял уже, что он только нули режет, теперь думаю, как туда весь диапазон влепить от 000 000 до 999 999 ))
Ответить с цитированием
  #9 (permalink)  
Старый 24.12.2014, 19:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Yu.Ka.,
так ?
summ2.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, "$1 ").replace(/(\d{3} \d{3})$/, "млн. $1");
Ответить с цитированием
  #10 (permalink)  
Старый 24.12.2014, 19:56
Новичок на форуме
Отправить личное сообщение для Yu.Ka. Посмотреть профиль Найти все сообщения от Yu.Ka.
 
Регистрация: 20.12.2014
Сообщений: 6

Спасибо, усе получилось
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JS задача. Взаимно простые числа sashok Общие вопросы Javascript 5 23.11.2014 10:16
Есть числа от (0 до 100) что бы все эти числа были заменины в итоге например 110 impi Общие вопросы Javascript 4 08.10.2014 08:30
Проблема с радио кнопками px379 Общие вопросы Javascript 8 29.07.2013 09:30
Проблема с Popup окном vovuslik jQuery 5 12.06.2010 16:12
Проблема с передачей числа konstantinopol Общие вопросы Javascript 7 12.03.2009 09:52