iCheck求和减去值

时间:2015-06-02 08:46:23

标签: jquery html events icheck

使用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进行此类操作的文档(我找不到任何)我需要将“无线电输入”中的值“加”到复选框
如果选择了无线电输入1,则该值为1,然后检查是否已选中复选框,如果是,则将该值与已检查的单选按钮相加:
喜欢:1radio + 10checkbox = 11,所以11是我的结果但是如果:
2radio + 10checkbox + 40checkbox那么= 52 ...正确吗?但是如果用户取消选中其中一个复选框然后减去该值...使用上面的代码,有点工作...我设法总结一个无线电和一个复选框,但如果我选择一个不同的单选按钮,它不会做什么,直到我选择另一个复选框,但它忽略了第一个复选框,当我取消选中一个复选框,它给我错误的结果...我不能使它工作使用iCheck ......

1 个答案:

答案 0 :(得分:0)

实现此目的的最简单方法是使用单个函数在无线电和复选框输入的change上运行。然后,此函数将总计所有选定元素的值,而不是从存储的总数中添加/删除当前值。

试试这个:

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

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

Example fiddle