我在使用jquery函数时遇到了一个小问题。我正试图在给定价格的情况下计算小计,同时输入数量。
这是我的html片段:
<!-- Price -->
<td width="10%"><div class="price" value="0"></div></td>
<!-- Quantity -->
<td width="9%"><input class="quantity" type="text" value="0" size="1" onchange="updateTotal(this)"/></td>
<!-- Subtotal -->
<td width="5%"><div class="subtotal" value="0"></div></td>
还有我的jQuery函数:
function updateTotal(qty){
//Calculate Subtotal for each item
var quantity = $(qty).val();
var price = $('.price').html();
var subtotal = parseFloat(price) * parseInt(quantity);
$('.subtotal').text(subtotal);
//Calculate Grand Total
var sum = 0;
$('.subtotal').each(function(){
sum += parseFloat($(this).text());
});
$('#grandTotal').html(sum);
}
我的结果:
!(http://i45.tinypic.com/16a7exy.png)
!(http://i48.tinypic.com/5vu9uf.png)
我不太确定发生了什么,我试图解决我正在处理的问题,但我失败了。任何帮助都将不胜感激。
$('.subtotal').text(小计);包含一个隐含的.each。这将导致您覆盖每一行小计。将该行替换为:,使其明确
$('.subtotal').each(function(){
this.text(subtotal);
});
使用类似的东西
$("#textbox").focusout(function () {
updateTotal(value);
});
使用Jquery并从文本字段中获取值,当焦点不在时,函数只调用一次。Onchange导致了这个问题。
2件事如果您正在处理.html
,请参见此处:http://jsfiddle.net/UpGWP/
另一种方式是使用.prop
api或.attr
api来获得值属性:http://jsfiddle.net/764J8/
希望它能帮助我们!
此外,我已经从div :)
中删除了href
代码
function updateTotal(qty) {
//Calculate Subtotal for each item
var quantity = $(qty).val();
var price = $('.price').attr('value');
alert(price);
var subtotal = parseFloat(price) * parseInt(quantity);
$('.subtotal').text(subtotal);
//Calculate Grand Total
var sum = 0;
$('.subtotal').each(function() {
sum += parseFloat($(this).text());
});
$('#grandTotal').html(sum);
}