我有一个表格,人们可以建立一个选择不同选项的订单,即他们先选择基本价格,然后再添加。单选按钮被隐藏,标签被设置为可点击区域。
要求包括能够取消选择单选按钮(即,如果你愿意,你可以将你的选择重置为null),我已经在下面的代码中正常工作。
我还必须将值写入页面上的其他元素。那也行得通。
什么不正常是将不同组的单选按钮的值添加到一起。
$('.order-option + label').click(function(e) {
var radio = $(this).attr('for');
radio = $('#' +radio );
var spec_price = 0;
var env_price = 0;
switch($(radio).attr('name')) {
case 'specifications':
spec_price = parseInt(radio.val());
break;
case 'envelopes':
env_price = parseInt(radio.val());
break;
}
var total_price = +spec_price + env_price;
var desc = radio.data('title');
if(radio.is(':checked')) {
e.preventDefault();
radio.removeAttr('checked');
}
$('.order-preview-total').html('$'+total_price+' (inc gst)');
$('#order-preview-total').val('$'+total_price+' (inc gst)');
$('.order-preview-content').html(desc);
$('#order-preview-content').val(desc);
});
当我点击第二行单选按钮时,它只会覆盖价格,而不是添加到它。
如果再次取消选择所有单选按钮,它也不会将总计重置为0.
带有类名的元素(例如.order-preview-total)是显示信息的元素,带有ID的元素是隐藏的元素,用于将数据传递给另一个表单。
根据要求,我创建了JSFiddle。如果单击第二行中的任何按钮,则应将值添加到您在第一行中已选择的值。如果您单击已经再次选择的选项,即取消选择该选项,则应再次减去该值。
答案 0 :(得分:1)
好吧,我想在总价格的情况下你需要在函数外面声明你的total_price变量并且set等于0,否则每次点击单选按钮时它都会覆盖它。
如果选中按钮,则减去值。没有HTML就很难说,但在我看来你需要修改你的if语句如下:
if(radio.is(':checked')) {
e.preventDefault();
var subtract = parseInt(this.val());
total_price = total_price - subtract;
radio.removeAttr('checked');
}