之前可能已经回答过,但我找不到有效的解决方案。
我需要添加小计输入框并将其输出为grandTotal。听起来很简单,我认为会是这样,但由于某种原因,我无法让它正常运作。
为了节省时间,我创建了一个jsFiddle - http://jsfiddle.net/wgrills/hKxgU/4/
编辑:很抱歉发布问题时很差。
我错过了大部分项目,因为我想加快jsfiddle。我已经更新了jsFiddle - http://jsfiddle.net/wgrills/hKxgU/7/。
如果单击+或 - 按钮,小计更改,这一切都很好。但我无法获得#grandTotal输入进行更新。问题似乎出现在:
var grandTotal = 0;
$(".subtotal").each(function() {
$(this).css("border-color","#f00");
grandTotal += $(this).val.split("£")[1];
});
$("#grandTotal").val("£" + grandTotal);
alert(grandTotal);
部分js。请注意css边框更改,警报就在那里,以确保脚本正常工作。
代码是早期的,这只是一个快速模拟。
答案 0 :(得分:1)
你给了两个问题,很容易解决!
你说的是你发布的上面的部分是问题的一部分。特别是这一行:
grandTotal += $(this).val.split("£")[1];
你在val之后错过了()
,所以代码 WOULD 在这里打破了,因为它不知道.val.
是什么。
此外,您发布的代码是在return false;
后有效告知函数已完成,在该行之后不要做任何事情。
但是,由于您需要在(点击)这两个函数中使用该部分代码,因此需要将其包装在自己的函数中:
function updateGrandTotal() {
var grandTotal = 0;
$(".subtotal").each(function() {
$(this).css("border-color", "#f00");
grandTotal += parseFloat($(this).val().split("£")[1]);
});
$("#grandTotal").val("£" + grandTotal);
alert(grandTotal);
}
在通知函数完成之前调用它:
updateGrandTotal();
return false;
然而,虽然这会对项目的加号起作用,但是当你使用一个项目时,你有另一个问题,并且该框变为零,而不是设置£0.00你将它设置为0,因此当它尝试时分开"£"
它不能。要解决此问题,只需将您将价格值转换为价格的位置从plus
函数复制到minus
函数中:
替换:
newprice = price * x;
$('#' + update).val(x);
$('#' + update + '_subtotal').val(newprice);
使用工作版:
newprice = (price * x) / 100;
newprice = newprice.toFixed(2);
newprice = '£' + newprice;
$('#' + update).val(x);
$('#' + update + '_subtotal').val(newprice);
答案 1 :(得分:0)
您的问题出在以下几行:
grandTotal += $(this).val.split("£")[1];
val
是一个函数,而不是返回对象的属性。您需要以下内容:
grandTotal += $(this).val().split("£")[1];
同样在你的小提琴中,你的函数中间有return false;
,它位于你正在调用val
的代码上方。也删除该返回。