2014-02-21 110 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函數只接受1個參數,似乎您想使用接受radix作爲第二個參數的parseInt函數。

而不是使用for循環這是沒有必要的,你可以選擇最接近tr後的設定值:

$('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

更好的工作。 。但同樣的事情..忽略逗號後的數字..我怎麼能不忽略這些數字? – ledesma

+0

@GilbertoGonçalvesMachado您可以使用JavaScript替換方法替換空字符串的逗號。計算後,您可以使用正則表達式格式化結果。 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,用例子更新了答案。 –

+0

沒有工作...我試過數量3和價格3.120,00應該給我總計9.360,00,它給我9.36 ...你知道什麼是錯的? – ledesma