将单选按钮的值添加到一起

时间:2013-11-19 07:03:04

标签: jquery forms

我有一个表格,人们可以建立一个选择不同选项的订单,即他们先选择基本价格,然后再添加。单选按钮被隐藏,标签被设置为可点击区域。

要求包括能够取消选择单选按钮(即,如果你愿意,你可以将你的选择重置为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。如果单击第二行中的任何按钮,则应将值添加到您在第一行中已选择的值。如果您单击已经再次选择的选项,即取消选择该选项,则应再次减去该值。

1 个答案:

答案 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');
}