我正在尝试使用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" />
基本上我只是在用户填写qtd [i]和price [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());
}
});
任何帮助?
答案 0 :(得分: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 :(得分:0)
您的代码中存在语法错误,{
语句缺少for
。另请注意,parseFloat
函数只接受1个参数,似乎您要使用接受基数作为第二个参数的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);
}
});