2014-09-11 3 views
0

사용자가 선택한 ASP 1 - 5 텍스트 상자에 따라 ASP.Net 페이지에 화면이 있습니다. 이 상자는 사용자가 금액을 입력 할 수있게합니다.텍스트 상자의 합계를 계산하십시오.

사용자가 특정 기준에 따라 화면에 들어가면 특정 수의 이러한 편집 상자가 표시됩니다. 그들은 숨겨지지 않습니다 ... 만약 내가 3 박스를 원한다면, 단지 3 박스가 스크린에 있습니다.

자바 스크립트에서 사용자가 금액을 입력하면 '합계'입력란이 표시되어 각 입력란의 값을 합산합니다.

따라서, 사용자 유형으로 모든 텍스트 상자에 대해 계산 된 총 전체 업데이트의 값 :

내가 사용

onkeyup="calculateTotal()" 

편집 상자에.

이를 위해, 내가 사용하는 아래의 코드 :

enter image description here

나는 확실하지 않다 :

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); 

    } 

첫 번째 문제는 내가 계산에 약간의 정밀도를 잃고 있어요 것이다 왜 제가 이상한 반올림 문제를 겪고 있는지, 제가하고있는 모든 것이 합산 될 때입니다.

또한 더 많은 상자를 추가하면 약간 더러워 보입니다. 코드를 수정해야합니다.

이 코드를 작동시키는 더 좋은 방법이 있습니까?

+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

답변에는 OP에 왜 문제가 있는지와 왜 답변으로 문제가 해결되는지 등이 포함되어야합니다. – RobG

+0

나는 그에게 더 나은 방법으로하는 법을 보여줬다. 충분하지 않은가? – codebased

+0

조직 단위 주제 - CPU 계산, 석사 학위에 대한 10 진 기초에 관해 논의하지 않겠습니다. – codebased

관련 문제