2014-09-11 5 views
0

У меня есть экран на моей странице ASP.Net, который, в зависимости от выбора пользователем, предоставляется между 1 и 5 текстовыми полями. Эти поля позволяют пользователю вводить сумму.Вычислить общее количество значений в текстовых полях

Когда пользователь вводит экран на основе определенных критериев, отображается определенное количество этих полей редактирования. Они не скрыты ... если я хочу 3 коробки, то на экране будут только 3 окна.

В javascript, когда пользователь вводит сумму, отображается поле «Total», суммируя значения из каждого окна.

Так как типы пользователей, значение в общих обновлений с общей вычисленной для всех текстовых полей:

Я использую:

onkeyup="calculateTotal()" 

на EditBox.

Чтобы сделать это, я использую ниже код:

function calculateTotal() { 

     var amt0 = $('.txtAmount0').val(); 
     var amt1 = $('.txtAmount1').val(); 
     var amt2 = $('.txtAmount2').val(); 
     var amt3 = $('.txtAmount3').val(); 
     var amt4 = $('.txtAmount4').val(); 


     var amt = Number(amt0); 
     if (!isNaN(amt1)) 
      amt += Number(amt1); 

     if (!isNaN(amt2)) 
      amt += Number(amt2); 

     if (!isNaN(amt3)) 
      amt += Number(amt3); 

     if (!isNaN(amt4)) 
      amt += Number(amt4); 

     $('.txtTotalAmount').text('$' + amt); 

    } 

Первый вопрос заключается в том, что, кажется, я теряю некоторую точность расчета:

enter image description here

Я не уверен, почему я получаю странную проблему округления, когда все, что я делаю, это подведение итогов.

Кроме того, это кажется немного грязным, если я добавил больше ящиков, мне нужно изменить код.

Есть ли лучший способ для этого кода работать?

+0

Пожалуйста, научиться использовать цикл ... Вы обнаружили пределы IEEE 754 номеров. ;-) Неужели кто-то может найти хороший дубликат? – RobG

ответ

1

Вы можете что-то вроде этого:

var sum = 0; 
    $("input[class*='txtAmount']").each(function() { 
      if ($.isNumeric($(this).val())) { 
     sum += Number($(this).val()); 
     } 
    }); 

    $('.txtTotalAmount').text('$' + sum.toFixed(2)); 
+0

Ваш ответ должен включать в себя, почему у ОП есть проблема и почему ваш ответ ее исправляет. – RobG

+0

Я только что показал ему, как это сделать лучше, этого недостаточно? – codebased

+0

Я не буду обсуждать о десятичном фундаменте, который восходит к теме Unit Unit - расчет процессора, степень магистра. – codebased

Смежные вопросы