2014-02-21 2 views
0

JQuery를 사용하여 입력 값을 곱하려고합니다. JQuery로 입력 곱하기

<tr> 
     <td><input type="text" name="qtd[1]" size="2" /></td> 
     <td><input type="text" name="price[1]" size="10" /></td> 
     <td><input type="text" name="total[1]" size="10" /></td> 
    </tr> 
    <tr> 
     <td><input type="text" name="qtd[2]" size="2" /></td> 
     <td><input type="text" name="price[2]" size="10" /></td> 
     <td><input type="text" name="total[2]" size="10" /></td> 
    </tr> 
<input type="hidden" value="2" name="qtd_itens" /> 

기본적으로 내가 총을 보여주기 위해 노력하고 [i]는 즉시 사용자가 QTD [I]과 가격 [I] ...

$(':input').bind('keypress keydown keyup change',function(){ 
    for ($i = 0; $i < $(':input[name="qtd_itens"]').val(); $i++) 

    var acho = parseFloat($(':input[name="qtd[' + $i + ' ]"]').val(),10), 
    alto = parseFloat($(':input[name="price[' + $i + ']"]').val(),10); 

    var v = ''; 
    if (!isNaN(acho) && !isNaN(alto)){ 
     v = (acho * alto); 
    } 
    $(':input[name="total[' + $i + ']"]').val(v.toString()); 
} 
}); 

어떤 도움을 채 웁니다로?

코드 : http://jsfiddle.net/gilbertogm85/XSAk5/1/

답변

0

for{ 누락 코드에 구문 오류가 있습니다. 또한 parseFloat 함수는 하나의 인수 만 허용한다는 점에 유의하십시오. radix를 두 번째 인수로 받아들이는 parseInt 함수를 사용하려는 것 같습니다.

$('input').on('keyup change', function (e) { 
    var $i = $(this).closest('tr').find('input'), 
     acho = parseFloat($i.eq(0).val()), 
     alto = parseFloat($i.eq(1).val()), 
     val = (acho * alto); 

    if (!isNaN(val)) { 
     $i.eq(2).val(val); 
    } 
}); 
+0

더 나은 일을 대신 당신이 다음 가장 가까운 tr를 선택할 수 있습니다 필요하지 않은 for 루프를 사용

는 값을 설정합니다. . 그러나 똑같은. .. 쉼표 뒤에 숫자를 무시하고있다. 어떻게 그 숫자들을 무시하지 않겠습니까? – ledesma

+0

@ GilbertoGonçalvesMachado 자바 스크립트'replace' 메소드를 사용하여 빈 문자열로 쉼표를 대체 할 수 있습니다. 계산 후 정규 표현식을 사용하여 결과의 ​​서식을 지정할 수 있습니다. SO에 관한 많은 관련 질문이 있습니다. – undefined

1

당신은 this처럼 뭔가를 시도 할 수 있습니다 :

$(function(){ 
    $('input[name^="price"]').on('keyup change',function(){ 
     var prc = $(this), 
      qty = prc.closest('tr').find('input[name^="qtd"]'), 
      tot = prc.closest('tr').find('input[name^="total"]'); 
     if(check(prc.val()) && check(qty.val())) { 
      var p = parseFloat((prc.val()).replace(',','')), 
       q = parseFloat((qty.val()).replace(',', '')), 
       total = p * q; 
      $(tot.val(total.toFixed(2))); 
     } 
    }); 

    function check($val) { return $val.match("^[0-9,\.]+$"); } 
}); 
+1

괜찮 았어 .. 난 단지 다른 질문이 있습니다 .. 우리는 1.230,00 같은 가격을 사용하지만 만약 내가 가격으로 그것을 내게 NaN 결과를 제공 .. 내가 어떻게 고칠 수 있을까? 또한 .. 그 라인을 변경 var total = prc.val() * parseFloat (qty.val(), 2); – ledesma

+0

@ GilbertoGonçalvesMachado, 답을 example으로 업데이트했습니다. –

+0

그 didnt는 일한다. .. 나는 수량 3을 시험해 보았다. 그리고 가격 3.120,00는 나에게 총 9.360,00와 그 줄 9.36를 줘야한다. .. 무엇이 틀린지에 관해 안다? – ledesma