2012-11-15 6 views
0

테이블에서 일부 작업을 수행하므로 사용자가 수량을 설정하는 것이 가능한 새로운 행을 추가하면 단가와 총계가 자동으로 계산됩니다. 이것은 각 행에서 발생합니다. 각 행을 추가 할 때 누적 될 테이블 아래에 합계 얻으려고 노력하고있어. 그렇지 않으면 행이 제거 될 때 줄여야합니다.새 행을 추가 할 때 행을 줄이고 행을 제거 할 때 행의 합계가 줄어 듭니다.

지금까지 설정중인 행의 합계 값만 표시되었습니다.

$('.tablePuc, .tablePus, .tableQuantity').live('keyup', function() { 
    var $row = $(this).closest('tr'); // all based on parent row 
    var unitPc = $row.find('.tablePuc').val(); 
    var unitPs = $row.find('.tablePus').val(); 
    var qty = $row.find('.tableQuantity').val(); 
    var imp = 0.21; 
    var totalSimp = unitPs * qty; 
    var totalCimp = unitPc * qty + ((unitPc * qty) * imp); 
    if (totalCimp) { 
     $row.find('.tableTotal').val(totalCimp); 
    } else if (totalSimp) { 
     $row.find('.tableTotal').val(totalSimp); 
    } 
    $('#labelResult').html(totalSimp); 
    $('#labelResult2').html(totalCimp); 
}); 

예는이 fiddle

+0

[knockoutjs] (http://knockoutjs.com/)에서 살펴볼 수 있습니다. 이 시나리오는이 프레임 워크에서 잘 설명 될 수 있습니다. –

답변

0

.live 제거해야 볼 대신 CSTE 연구진 사용할 수 있습니다! 그에서 제외

: 각 추가/행의 총 수를 다시 계산하거나 변수 및 증가에 저장/맞춤으로 감소 삭제 한 후

var rowCount = $('#table_id >tbody >tr').length; //rowCount = number of rows of the table tbody! 

당신은 그것을 사용할 수 있습니다. 나는 테이블이 크지 않기 때문에 매번 다시 계산할 것입니다. 당신이 한 번에 모든 행 아이들을하려면

sum=0; 
$('#table_id >tbody >tr').children().eq(n).each(function(){ //n is the row column where u want to get the data 
    sum+=$(this).val(); 
}); 

:

sum=[]; 
$('#table_id >tbody >tr').each(function(){ 
    x=0; 
    $(this).children().each(function(){ 
     sum[x]+=$(this).val(); 
     x++; 
    }); 
}); 
0

당신은 당신의 테이블에있는 모든 행을 반복한다

당신도이 방법을 사용할 수 있습니다. .. 그게 뭔가 작동해야합니다 :

$('table').on('keyup', '.tablePuc, .tablePus, .tableQuantity', updateTotal); 


function updateTotal() { 
    var totalSimpGlobal = 0; 
    var totalCimpGlobal = 0; 

    $("#tableSo").find("tr:gt(0)").each(function() { 
     var $row = $(this); // all based on parent row 
     var unitPc = $row.find('.tablePuc').val(); 
     var unitPs = $row.find('.tablePus').val(); 
     var qty = $row.find('.tableQuantity').val(); 
     var imp = 0.21; 
     var totalSimp = unitPs * qty; 
     totalSimpGlobal += totalSimp; 
     var totalCimp = unitPc * qty + ((unitPc * qty) * imp); 
     totalCimpGlobal += totalCimp; 
     if (totalCimp) { 
     $row.find('.tableTotal').val(totalCimp); 
     } else if (totalSimp) { 
      $row.find('.tableTotal').val(totalSimp); 
     } 

    }); 

    $('#labelResult').html(totalSimpGlobal); 
    $('#labelResult2').html(totalCimpGlobal); 
} 

바이올린 : http://jsfiddle.net/3zV2G/3.


편집

나는 새로운 라인을 처리하기 위해 첫 번째 라인을 업데이트했습니다.

+0

jsfiddle을 시도했지만 .. 새로운 행을 추가 할 때 작동하지 않습니다. =/ – adavia

+0

죄송합니다.이 부분을 잊어 버렸습니다 :'on'을 사용하면 기존 요소를 기반으로해야합니다 : [Updated fiddle] (http://jsfiddle.net/3zV2G/3/). –

관련 문제