iCheck 总和和减去值

iCheck sum and subtract values

使用 iCheck 的库我有一个基本的 html:

<form>
    <input type="radio" name="pks" value="1">
    <input type="radio" name="pks" value="2">
    <input type="radio" name="pks" value="3">
    <hr>
    <input type="checkbox" name="op1" value="10">
    <input type="checkbox" name="op2" value="20">
    <input type="checkbox" name="op3" value="30">
    <input type="checkbox" name="op4" value="40">
</form>

那么我有我的 jQuery:

$('input[name="pks"]').on('ifChecked', function(e) {
    var $pkss = $(this).val();
    $('input[type="checkbox"]').on('ifChecked', function(ev) {
        var $ops = $(this).val();
        sum = parseFloat($pkss) + parseFloat($ops);
        // alert(sum);
        $('#tt').text(sum)
    });
    $('input[type="checkbox"]').on('ifUnchecked', function(ev) {
        var $ops = $(this).val();
        sum = parseFloat($pkss) - parseFloat($ops);
        // alert(sum);
        $('#tt').text(sum)
    });

});

不使用 iCheck 我想要完成的事情非常简单,但是由于我正在学习这个库并且没有关于使用 iCheck 进行此类操作的文档(我找不到任何文档)我需要 "sum" 从无线电输入到复选框的值
如果单选输入 1 是 selected 则值为 1,然后检查是否已选中复选框,如果已选中,则将该值与已选中的单选按钮相加:
喜欢:1radio + 10checkbox = 11,所以 11 是我的结果但是如果:
2radio + 10checkbox + 40checkbox 然后= 52 ...正确吗?但是如果用户取消选中其中一个复选框然后减去该值...使用上面的代码,有点工作......我设法总结了一个收音机和一个复选框,但如果我 select 一个不同的单选按钮,它什么都不做,直到我 select 另一个复选框,但它忽略第一个复选框,当我 deselect 一个复选框时,它给我错误的结果...我无法使用 iCheck 使其工作...

实现此目的的最简单方法是拥有一个在单选输入和复选框输入的 change 上运行的函数。然后此函数将计算所有选定元素的值,而不是 adding/removing 存储总计中的当前值。

试试这个:

$(':radio, :checkbox').change(updateTotal);

function updateTotal() {
    var total = 0;
    $(':radio:checked, :checkbox:checked').each(function () {
        total += parseInt(this.value);
    });
    console.log(total);
}

Example fiddle