/ / iCheck suma y resta valores - jquery, html, events, icheck

iCheck suma y resta valores - jquery, html, eventos, icheck

Usando la biblioteca de iCheck tengo un 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>

Entonces tengo mi 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)
});

});

Lo que estoy tratando de lograr es muy simplesin el uso de iCheck, pero ya que estoy aprendiendo esta biblioteca y no hay documentación para este tipo de operación usando iCheck (no pude encontrar ninguna) Necesito "sumar" los valores de la entrada de radio en la casilla de verificación
si se selecciona la entrada de radio 1, entonces el valor es 1, luego verifique si se ha marcado una casilla de verificación, y luego sume ese valor al botón de radio que se ha marcado:
Me gusta: 1radio + 10checkbox = 11, entonces 11 es mi resultado, pero qué pasa si:
2radio + 10checkbox + 40checkbox entonces = 52 ... ¿correcto ?, pero si el usuario desactiva una de las casillas de verificación, entonces resta ese valor ... con el código anterior, más o menos ... puedo sumar una radio y una casilla de verificación, pero si selecciono un botón de opción diferente no hago nada hasta que selecciono otra casilla de verificación pero ignora la primera casilla de verificación y cuando desactivo una casilla de verificación me da el resultado incorrecto ... No puedo hacer que funcione con iCheck ...

Respuestas

0 para la respuesta № 1

La forma más fácil de lograr esto es tener una sola función que se ejecute en change de las entradas tanto de radio como de casilla de verificación. Esta función luego totalizará los valores de todos los elementos seleccionados, en lugar de agregar / eliminar el valor actual de un total almacenado.

Prueba esto:

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

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

Ejemplo de violín