Reputation: 49
I have the sum value for the yes column done but I cant get the sum for the "NO" and "Sometimes" column. I tried adding an else if to add the sum of radio buttons that are not checked. So the problem I m running into is that whenever I try to add logic for the "NO" column I get a NAN.
var frm = document.forms.myForm;
frm.onchange = function(e) {
var tot = 0;
for (var i = 0, l = frm.elements.length; i < l; i++) {
if (frm.elements[i].checked == true) {
tot += parseFloat(frm.elements[i].getAttribute('value'));
}
}
document.getElementById('totalYes').value = (tot / 1);
}
<form name="myForm">
<table>
<tr>
<td><label for="p1">P1</label></td>
<td><input value="1" name="p1Choice" type="radio" class="Yes"></td>
<td><input value="1" name="p1Choice" type="radio" class="No"></td>
<td><input value="1" name="p1Choice" type="radio" class="sometimes"></td>
</tr>
<tr>
<td><label for="p2">P2</label></td>
<td><input value="1" name="p2Choice" type="radio" class="Yes"></td>
<td><input value="1" name="p2Choice" type="radio" class="No"></td>
<td><input value="1" name="p2Choice" type="radio" class="sometimes"></td>
</tr>
<tr>
<td><label for="p3">P3</label></td>
<td><input value="1" name="p3Choice" type="radio" class="Yes"></td>
<td><input value="1" name="p3Choice" type="radio" class="No"></td>
<td><input value="1" name="p3Choice" type="radio" class="sometimes"></td>
</tr>
<tr>
<td><label>Total =</label></td>
<td><input type="text" id="totalYes"></td>
<td><input type="text" id="totalNo"></td>
<td><input type="text" id="totalSometimes"></td>
</tr>
</table>
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
Upvotes: 0
Views: 121
Reputation: 2505
Use Jquery
Add a class (I call it 'chkbox') to each checkbox.
Then add an onclick handler for each checkbox (you can also use .change() instead). That function will be called every time any of the checkbox being clicked.
That function will count the total of each 'yes','no' or 'sometimes'.
$(".chkbox").click(function() {
var checkboxes = $(".chkbox");
var totalYes = 0;
var totalNo = 0;
var totalStm = 0;
for(var i = 0; i < checkboxes.length; i++) {
var currentCheckbox = $(checkboxes[i]);
if(currentCheckbox.prop("checked")) {
if(currentCheckbox.hasClass("Yes")) {
totalYes = totalYes + 1;
}
if(currentCheckbox.hasClass("No")) {
totalNo = totalNo + 1;
}
if(currentCheckbox.hasClass("sometimes")) {
totalStm = totalStm + 1;
}
}
}
$("#totalYes").val(totalYes);
$("#totalNo").val(totalNo);
$("#totalSometimes").val(totalStm);
});
<form name="myForm" id="myForm">
<table>
<tr>
<td><label for="p1">P1</label></td>
<td><input value="1" name="p1Choice" type="radio" class="Yes chkbox"></td>
<td><input value="1" name="p1Choice" type="radio" class="No chkbox"></td>
<td><input value="1" name="p1Choice" type="radio" class="sometimes chkbox"></td>
</tr>
<tr>
<td><label for="p2">P2</label></td>
<td><input value="1" name="p2Choice" type="radio" class="Yes chkbox"></td>
<td><input value="1" name="p2Choice" type="radio" class="No chkbox"></td>
<td><input value="1" name="p2Choice" type="radio" class="sometimes chkbox"></td>
</tr>
<tr>
<td><label for="p3">P3</label></td>
<td><input value="1" name="p3Choice" type="radio" class="Yes chkbox"></td>
<td><input value="1" name="p3Choice" type="radio" class="No chkbox"></td>
<td><input value="1" name="p3Choice" type="radio" class="sometimes chkbox"></td>
</tr>
<tr>
<td><label>Total =</label></td>
<td><input type="text" id="totalYes"></td>
<td><input type="text" id="totalNo"></td>
<td><input type="text" id="totalSometimes"></td>
</tr>
</table>
</form>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Upvotes: 1