/ / iCheck sumowanie i odejmowanie wartości - jquery, html, zdarzenia, icheck

iCheck suma i odjęcie wartości - jquery, html, events, icheck

Korzystając z biblioteki iCheck mam podstawowy 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>

Więc mam moje 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)
});

});

To, co próbuję osiągnąć, jest bardzo prostebez użycia iCheck, ale odkąd uczę się tej biblioteki i nie ma dokumentacji dla tego rodzaju operacji za pomocą iCheck (nie mogłem znaleźć żadnej).
jeśli wybrano wejście radiowe 1, wartość wynosi 1, a następnie sprawdź, czy pole wyboru zostało sprawdzone, jeśli tak, a następnie sumuj tę wartość do zaznaczonego przycisku radiowego:
jak: 1radio + 10checkbox = 11, więc 11 to mój wynik, ale co jeśli:
2radio + 10checkbox + 40checkbox następnie = 52 ... poprawne ?, ale jeśli użytkownik odznaczy jedno z pól wyboru, a następnie odejmie tę wartość ... z powyższym kodem kid, rodzaj pracy ... Udaje mi się zsumować jedno radio i jedno pole wyboru, ale jeśli wybiorę inny przycisk radiowy, to nie robi nic, dopóki nie zaznaczę innego pola wyboru, ale zignoruje pierwsze pole wyboru, a kiedy odznaczę to pole wyboru, daje mi to zły wynik ... Nie mogę sprawić, aby działało przy użyciu iCheck ...

Odpowiedzi:

0 dla odpowiedzi № 1

Najłatwiejszym sposobem osiągnięcia tego jest uruchomienie jednej funkcji change zarówno wejść radiowych, jak i pól wyboru. Ta funkcja sumuje wartości wszystkich wybranych elementów, zamiast dodawać / usuwać bieżącą wartość z zapisanej sumy.

Spróbuj tego:

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

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

Przykład skrzypce