2016-06-10 2 views
0

그래서 내가 지금 시간 동안 해결할 수없는 문제가있는 경우에만 해당 행에 대한 합계를 계산 "Pridėti prekę"다음 한 행은 동적으로 테이블에 추가하고 내가 쓸 때입니다 "Kiekis"및 "Kaina"열의 수는 "수마"열에서 아무 것도 발생하지 않습니다 (동적으로 행을 추가하는 경우에만 발생합니다). jQuery를의</p> <p>..

조각 :

$(document).on('keyup', '#quantity, #price', function() { 
    $('#total').val(($('#quantity').val() * $('#price').val()).toFixed(2)); 
}); 

내 코드 "작업"방법 JSFiddle를보고하십시오 : 사전에 도움을

https://jsfiddle.net/w5qz5exe/7/

감사합니다!

P.S div ID total에서 div class total으로 변경하려고 시도했지만 작동하지만 관련성이있는 모든 행에 적용됩니다.

답변

1

당신은 모든 것을 id로 참조하고있었습니다.

$(document).on('keyup', '.quantity, .price', function() { 
     var row = $(this).closest('tr'); 
     var rowPrice = $(row).find('.price').val(); 
     var rowQuantity = $(row).find('.quantity').val(); 

     $(row).find('.total').val((rowPrice * rowQuantity).toFixed(2)) 
    }); 

https://jsfiddle.net/w5qz5exe/12/

+0

왜'갔지 (0)'설정'row'를 사용합니까? 그냥 jQuery 객체를 할당하고 나머지 기능에서 사용하십시오. – Barmar

+0

네 말이 맞아. 편집 됨. 코드를 쉽게 읽고 모든 jQuery 객체의 위치를 ​​볼 수 있기 때문에 $ (row)를 사용하는 것과 같습니다. – wot

0

문제는 입력이 다른 것 대신에 ID를 사용하고 있다는 사실입니다. 문제의 항목을 찾을 때 발견 된 첫 번째 ID에서 검색이 중지됩니다.

이 업데이트 된 바이올린 https://jsfiddle.net/w5qz5exe/11/은 클래스를 사용하여 수행 할 수있는 방법을 보여줍니다.

 $(document).on('keyup', '.quantity, .price', function(e) { 
      var $parent = $(e.target).parents('tr'), 
       $total = $parent.find('.total'), 
       $quantity = $parent.find('.quantity'), 
       $price = $parent.find('.price'); 
      $total.val(($quantity.val() * $price.val()).toFixed(2)); 
     }); 

위의 내용 외에도 모든 입력 ID를 입력에서 제거하고 대신 클래스로 변경하십시오.