2011-12-26 2 views
0

나는 누군가가 우연히 만나기를 희망하고있다. 비슷한 질문을 게시했지만 (해결 된) 새로운 문제에 대한 추가 도움이 없었기 때문에이 질문에 게시 할 것입니다 (금기시 되더라도 미안).동적 인 분야 - 합계를위한 추가 - 각 줄

 <table border="1" class="autoTable"> 
<tr> 

<td>Description</td><td>Stocked</td><td>Quantity</td><td>Part Price</td> 
<td>Hours</td>  
<td>Rate Class</td><td>Total</td><td>Approved</td><td>Add New Row</td>  
<td>Remove Row</td></tr> 
<tr> 
<td><input name="description[]" id="description" value="<?php echo $description; ?>" size="55" class="numeric add_to_total" onKeyPress="return disableEnterKey(event)" /> 

</td><td align="center"><input type="checkbox" name="stocked[]" id="stocked" value="<?php echo $stocked; ?>" size="5" class="numeric add_to_total" onKeyPress="return disableEnterKey(event)" /> 
</td><td><input name="quantity[]" id="quantity" value="<?php echo $quantity; ?>" size="5" class="numeric add_to_total quantity" onKeyPress="return disableEnterKey(event)" /> 
</td><td><input name="partPrice[]" id="partPrice" value="<?php echo $partPrice; ?>" size="10" class="numeric add_to_total part" onKeyPress="return disableEnterKey(event)" /> 
</td><td><input name="hours[]" id="hours" value="<?php echo $hours; ?>" size="10" class="numeric add_to_total hours" onKeyPress="return disableEnterKey(event)" /> 
</td><td><select name="rate[]" id="rate" class="numeric add_to_total rate" onKeyPress="return disableEnterKey(event)"> 
<?php 
    //php code here for rates 
?> 
</select> 
</td><td><input name="total[]" id="total" size="10" class="numeric is_total" onKeyPress="return disableEnterKey(event)" /> 
</td><td align="center"><input type="checkbox" name="approved[]" id="approved" value="<?php echo $approved; ?>" size="10" onKeyPress="return disableEnterKey(event)" /> 
</td><td align="center"><img src="img/plus.png" width="25" height="25" id="addButton" title="Add New Row" class="addRow" /> 
</td><td align="center"><img src="img/x.png" width="25" height="25" id="removeButton" title="Remove Row" class="delRow" /> 
</td></tr> 
</table> 

총 행을 추가하는 데 다음 코드를 사용하지만 두 번째 및 후속 동적 행에는 작동하지 않습니다.

$(".add_to_total").change(function() { 
    var total = 0; 
    $(".add_to_total").each(function() { 
     var quantity = parseFloat($(".quantity").val()) || 0; 
     var part = parseFloat($(".part").val()) || 0; 
     var hours = parseFloat($(".hours").val()) || 0; 
     var rate = parseFloat($(".rate").val()) || 0; 
     total = (Number(quantity) * Number(part)) + (Number(rate) * Number(hours)); 
    }); 
    $(".is_total").val(total); 
}); 

나는 누군가가 나를 도울 수 바라고 있어요 ... 내가 생각할 수있는 모든 노력을했습니다, 나는 정말이 일이 해결 얻을 싶어, 내 인생 :

로 이동 미리 감사드립니다.

+0

어쩌면 나는 완전히 그것을 놓치고 있지만 JavaScript가 입력해야하는 입력을 보지 못했습니다. – jprofitt

+0

여기서 무엇을하려고하는지 명확하지 않습니다. 너 정확히 총을 찾고있는거야? – Chibuzo

+0

@WillSam 이전 질문이 해결 된 경우 대답의 왼쪽에있는 녹색 진드기를 터치하여 Accepted로 표시하십시오. –

답변

1

나는 클래스 add_to_total, quantity, part, hours, rate 또는 is_total이 HTML, 또는 어떤 당신이 결과로 자바 스크립트에서 선택하려는 요소에 어디에 ... 볼 희망이 도움이되지 않습니다. ..

EDIT :

다시 대한 생각, 상기 새롭게 추가 된 행 'add_to_total 분류 요소 결합되지t의 결과로서있을 o 이벤트를 변경하십시오. .live()/.on() jQuery 이벤트 (사용중인 jQuery 버전에 따라 다름)를 사용 해본 적이 있습니까?

http://api.jquery.com/live/ (jQuery를 < 1.7)

http://api.jquery.com/on/ (jQuery를> = 1.7)

어쩌면 같은 것을 구현 :

// using the .live() event... 
$(".add_to_total").live('change', function(){ ... }); 

// using the .on() event... 
$(".add_to_total").on('change', function(){ ... }); 

편집 :

하하! 잘하면 마지막 편집! 음, 다음 코드를 고려 : 요소 세트가 실제로 선택되어 있지만,

var quantity = parseFloat($(".quantity").val()) || 0; 

이 항상 $(".quantity")의 값을 반환됩니다 ...이 jQuery를에 .val() 기능의 단지 기능입니다. 네가 말한 것처럼 각 행에 대한 프로세스 계산이 필요하다. 간체, 현재 add_to_total에 대한 TR 요소를 가져와 해당 하위 요소에만 초점을 맞춘 다음 계속 진행해야합니다.

는 분명히 이것은 불필요한 계산을 많이 처리하고, 내가 직접 오히려 그들을 통해 실행 계산 및 루프를해야하는 각 행에 클래스를 추가하는 오히려 제안 :

<tr class="dynamic_row"> ... </tr> 

을 다음 자바 스크립트 :

$(".add_to_total").on('change', function() { 
    var total = 0; 
    $(".dynamic_row").each(function() { 
     var row = $(this); 
     var quantity = parseFloat(row.find(".quantity").val()) || 0; 
     var part = parseFloat(row.find(".part").val()) || 0; 
     var hours = parseFloat(row.find(".hours").val()) || 0; 
     var rate = parseFloat(row.find(".rate").val()) || 0; 
     total = (Number(quantity) * Number(part)) + (Number(rate) * Number(hours)); 
    }); 
    row.find(".is_total").val(total); 
}); 

희망이 있습니다.:)

+0

예, 그건 바보 같았어요. 내가 올렸을 때 코드를 가지고 놀았 어. 이것은 내가 클래스를 가진 테이블을 위해 사용해온 것이다. 당신의 도움을 주셔서 감사합니다. –

+0

나는 테이블을 편집했다. –

+0

아니, 내가 할 수없는 것, 내 동적 트리거를 사용하여 테이블에 다른 행을 추가 할 때 jquery.table.addrow.js 플러그인을 사용하는 것입니다 (http://www.examplet.buss.hk/ jquery/table.addrow.php), 전체를 가져올 수 없습니다. 첫 번째 행만 계산할 수 있는데 페이지가로드 될 때 거기에 있습니다. jquery를 사용하여 각 행에 합계를 추가하는 방법을 찾아야합니다. –

0

Chris의 제안 덕분에 나는 row.find(".is_total").val(total); 행을 이동 시켰습니다. 그의 제안에서, 그는 그것이 선언 된 요소 바깥에 있었기 때문에, 나는 이 우리가 무엇에 관해 이야기하고 있는지 알지 못했다고 생각한다. 나는 그의 편집 # 3에서 그것을 이해, 각 occurance에 위해
$(".add_to_total").live('change',function() {
그것을 만들 수있는 기능 :

나는 또한
$(".add_to_total").change(function() {
에 변경.

그래서 합계를 계산하는 마지막 기능입니다 : 나는 상대적으로 초보자가 스택 오버플하는거야 때문에

$(".add_to_total").live('change',function() { 
    var total = 0; 
    $(".dynamic_row").each(function() { 
     var row = $(this); 
     var quantity = parseFloat(row.find(".quantity").val()) || 0; 
     var part = parseFloat(row.find(".part").val()) || 0; 
     var hours = parseFloat(row.find(".hours").val()) || 0; 
     var rate = parseFloat(row.find(".rate").val()) || 0; 
     total = (Number(quantity) * Number(part)) + (Number(rate) * Number(hours)); 
     row.find(".is_total").val(total); 
    }); 
}); 

, 나는 그의를 허용하는 것보다 다른, 그에게 어떤 신용을 제공하는 방법을 잘 모르겠어요 받아 들인 대답, 그리고 유용한 옵션을 향상시키기 위해서.

정말 고마워요!

+0

꽤 많이 받아 주셔서 감사합니다! 기꺼이 도와 줬다! 내가 검색에서이 문제를 겪고있는 다른 사람들에게 더 관련성이 있도록 내 대답을 편집 할 예정입니다. :) –