/ / iCheck soma e subtrai valores - jquery, html, eventos, icheck

iCheck soma e subtrai valores - jquery, html, eventos, icheck

Usando a biblioteca do iCheck eu tenho um html básico:

<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>

Então eu tenho meu 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)
});

});

O que estou tentando realizar é muito simplessem o uso de iCheck, mas desde que eu estou aprendendo esta biblioteca e não há documentação para este tipo de operação usando iCheck (eu não consegui encontrar nenhum) eu preciso "somar" os valores da entrada de rádio para a caixa de seleção
Se a entrada de rádio 1 for selecionada, o valor será 1 e, em seguida, verifique se uma caixa de seleção foi marcada e, em seguida, some esse valor ao botão de opção que foi verificado:
como: 1radio + 10checkbox = 11, então 11 é o meu resultado mas e se:
2radio + 10checkbox + 40checkbox então = 52 ... correto ?, mas se o usuário desmarcar uma das caixas de seleção então subtraia esse valor ... com o código acima de "garoto de, tipo de trabalho ... eu consigo somar um rádio e uma caixa de seleção mas se eu selecionar um botão de rádio diferente não faz nada até que eu selecione outra caixa de seleção, mas ignora a primeira caixa de seleção e quando eu desmarcar uma caixa de seleção que me dá o resultado errado ... eu não consigo fazer o trabalho usando o iCheck ...

Respostas:

0 para resposta № 1

A maneira mais fácil de conseguir isso é ter uma única função que é executada change de ambas as entradas de rádio e caixa de seleção. Esta função irá então totalizar os valores de todos os elementos selecionados, ao invés de adicionar / remover o valor atual de um total armazenado.

Tente isto:

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

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

Exemplo de violino