2014-08-27 2 views
0

이미 값이있는 두 입력의 합계를 더하려고합니다. 다른 두 입력 중 하나라도 값이 변경되면 합계가 값을 변경하기를 원했습니다. 나는이 다음을 가지고 있지만 작동하지 않는 그 :두 입력의 태양을 기반으로 한 입력 값 바꾸기

<?php 


while($row = mysqli_fetch_array($test)) { 
echo "<tr class='saved_add'>"; 
echo "<td><input/></td>"; 
echo "<td><input/></td>"; 

echo "<td><select'>"; 
echo "<option value='service'"; 
if ($row['type'] == "service") { 
echo "selected='selected'";} 
echo ">Service</option>"; 
echo "<option value='hours'"; 
if ($row['type'] == "hours") { 
echo "selected='selected'";} 
echo ">Hours</option>"; 
echo "<option value='days'"; 
if ($row['type'] == "days") { 
echo "selected='selected'";} 
echo ">Days</option>"; 
echo "<option value='product'"; 
if ($row['type'] == "product") { 
echo "selected='selected'";} 
echo ">Product</option></select></td>"; 

echo "<td><input/></td>"; 
echo "<td><input/></td>"; 
echo "<td><input/></td>"; 
echo "<td><input/></td>"; 
echo "<td><input class='subtotal'/></td>"; 
echo "</tr>"; 
} 


mysqli_close($con); 
?> 

JQuery와 :

$('.saved_add').each(function() { 
    sum = $('input:eq(2)', this).val() * $('input:eq(5)', this).val(); 
    $(".subtotal").text(sum); 
}); 

어떤 아이디어?

+1

... 디버거 및 디버그 엽니 다. jquery 선택기가 올바른 요소를 해결합니까? 합계로 이슈를 발행하고 있습니까? 코드가 실행되고 있습니까? – Malk

+0

그게 @malk 오류가 표시되지 않습니다. – lancey

답변

0

요소에 .val()을 호출하면 해당 값이 문자열로 반환됩니다. 수학적 연산을하기 전에 먼저 숫자로 변환해야합니다. 문자열을 정수로 변환하려면 parseInt() 메서드를 사용할 수 있습니다. 이 라인을 따라

$('.saved_add').each(function() { 
    var sum = $('input:eq(2)', this).val() * $('input:eq(5)', this).val(); 
    $(".subtotal").text(sum); 
}); 
1

뭔가 : IT가로드 할 때

function calculateSum() { 
    $('.saved_add').each(function() { 
    sum = $('input:eq(2)', this).val() * $('input:eq(5)', this).val(); 
    $(".subtotal").text(sum); 
    }); 
    } 

// On first load 
calculateSum(); 

// On change 
$("input").change(calculateSum); 

귀하의 코드는 값을 계산합니다. 값이 변경 될 때로드 할 때 계산하기를 원하므로 .change() 함수가 필요합니다.

업데이트

+0

시스코에 답해 주셔서 감사하지만 각 문은 각 so $ ("input : eq (2), input : eq (5)")입니다. (calculateSum); 실 거예요. – lancey

+0

내가 추가 한 HTML 코드가 표시되지 않았습니다. 그러나 요점은 여전히 ​​유효합니다. 입력이 변경되면 업데이트해야합니다 (일반 방법을 보여주기 위해 편집) –

+0

죄송 합니다만이 작업이 원활하지 않습니다. – lancey

0

편집, 나는 그것을 파악, 도와

$('.saved_add').each(function(i, el) { 
    $(el).on("change", function() { 
     // cast `sum` as `Number` 
     sum = Number($('input:eq(2)', this).val() * $('input:eq(5)', this).val()); 
    $(".subtotal").text(sum); 
}).change(); 
}); 

jsfiddle http://jsfiddle.net/guest271314/20jeoc9y/

+0

각 구문이 없기 때문에 작동하지 않습니다. 입력이 동적으로 생성되기 때문에 각 구문이 필요합니다. – lancey

+0

도움을 주셔서 감사합니다.하지만 그 작업은 둘 이상의 입력에 적용됩니다. – lancey

+0

"두 개 이상의 입력에 대해 작업이 작동합니다." ? OP에서 제공되는 2 가지 요소의 post/jsfiddle 반품 상품. 가능하다면, 게시물의 문제, 요구 사항의 구체적인 내용을 설명해주십시오. 감사 – guest271314

0

모두에게 감사를 사용해보십시오. 각 입력을 ID로 작성하여 적절하게 변경할 수 있도록 도와줍니다.

HTML :

<div id="saved1"> 
    <input type="text" value="10" /><input type="text" value="10" /> <input type="text" value="10" />  
    <div id="subtotal1"></div> 
</div> 
<div id="saved2"> 
    <input type="text" value="10" /><input type="text" value="10" /> <input type="text" value="10" />  
    <div id="subtotal2"></div> 
</div> 

JQuery와 :

function calculateSum() { 
    $("[id^=saved]").each(function() { 
    sum = $('input:eq(0)', this).val() * $('input:eq(1)', this).val(); 
    $('input:eq(2)', this).val(sum); 
    }); 
    } 

// On first load 
calculateSum(); 

// On change 
$("input").change(calculateSum); 
그냥 생각

JSFiddle

관련 문제