好的,我现在有一个表格,让我们选择某些单选按钮,但是如果某些单选按钮被选中,那么其他人则不能。
我已经设置了JSFIDDLE,因此您可以更轻松地看到这一点。我知道代码看起来有点像梅西。
我遇到的问题是在表单的底部有一个Order Total (excluding VAT):
部分,它将所有单选按钮相加。问题是例如,如果你检查左上角的单选按钮(25英镑1年所有积木和单位(总共15个评估))然后在Order Total (excluding VAT):
部分,它在总计框中显示25英镑。然后,如果你检查下面的单选按钮是47.50英镑,总框说47.50英镑,这一切都很好。但后来说用户改变了想法并回到25英镑的选项,它保留了47.50英镑,并在顶部增加了25英镑,所以当它应该是25英镑时说72.50英镑。您可以看到单选按钮的价格由data-price="25"
所以我的问题是看看代码是否可能总计仅添加被检查的单选按钮?
我认为这是用它来缓存先前选择的内容并使用此代码吗?
$('input:radio').change(function(){
var total = 0.0;
$('input:radio:checked').each(function(){
total += parseFloat($(this).data('price'));
});
$('#total').val(total.toFixed(2));
});
答案 0 :(得分:0)
问题是执行顺序之一。
您使用jQuery.on(),jQuery.click()和jQuery.change()实现了三组事件处理程序。我不想猜测这些事件的触发顺序,而且很可能订单因浏览器而异。
因此,求和处理程序可以在其他处理程序之前运行,这就是正在发生的事情。
为了安全起见,我会为所有单选按钮编写一个唯一的处理程序。在内部进行分支以响应特定情况,然后最终运行求和循环。