Okay, in that case, I would add another sub-question to the array - "Total".
Then use this script instead of the one above. In addition to previous functionality, it will:
Code:
<script type="text/javascript" charset="utf-8">
$(document).ready(function(){
var thisQuestion = $('#question{QID}');
var qID = {QID};
// Add some classes for manipulation
$('tr.subquestions-list', thisQuestion).each(function(i){
$('> *', this).each(function(i){
$(this).addClass('col-'+i+'');
});
});
$('tr.subquestions-list:last', thisQuestion).addClass('last');
$('tr.subquestions-list:not(.last) .col-2 input[type="text"]', thisQuestion).addClass('final');
$('tr.subquestions-list:not(.last) .col-3 input[type="text"]', thisQuestion).addClass('percent');
$('tr.subquestions-list:not(.last) .col-4 input[type="text"]', thisQuestion).addClass('rating');
// Disable the "Rating" inputs
$('input.rating', thisQuestion).prop('disabled', true);
// Hide the unwanted total inputs
$('tr.subquestions-list.last input[type="text"]:not(:last)', thisQuestion).hide();
// Initial totals
$('tr.subquestions-list.last input[type="text"]', thisQuestion).val(0).prop('disabled', true);
var lastRowCode = $('tr.subquestions-list:last', thisQuestion).attr('id').split('X'+qID)[1];
// Listeners on the "Final" and "Percent" inputs
$('input.final, input.percent', thisQuestion).change(function(event) {
handleRating(this);
});
$('input.final, input.percent', thisQuestion).keyup(function(event) {
handleRating(this);
});
function handleRating(thisInput) {
var thisRow = $(thisInput).closest('tr.subquestions-list');
var thisFinal = $('input.final', thisRow).val();
var thisPercent = $('input.percent', thisRow).val();
if(thisFinal != '' && thisPercent != '') {
$('input.rating', thisRow).val(thisFinal * thisPercent / 100)
}
else {
$('input.rating', thisRow).val('');
}
}
// Listeners on the inputs to load totals
$('tr.subquestions-list:not(.last) input[type="text"]:not(.rating)', thisQuestion).change(function(event) {
handleTotals();
});
$('tr.subquestions-list:not(.last) input[type="text"]:not(.rating)', thisQuestion).keyup(function(event) {
handleTotals();
});
function handleTotals() {
$('tr.subquestions-list.last input[type="text"]', thisQuestion).each(function(i) {
var thisCode = $(this).attr('id').split('X'+qID+lastRowCode+'_')[1];
var newTotal = 0;
$('tr.subquestions-list:not(.last) input[type="text"][id$="_'+thisCode+'"]', thisQuestion).each(function(i) {
if($.isNumeric($(this).val())) {
newTotal = newTotal + Number($(this).val());
}
});
$(this).val(newTotal);
});
}
// Re-enable the "Rating" inputs on submit
$('form#limesurvey').submit(function(){
$('input.rating, tr.subquestions-list.last input[type="text"]', thisQuestion).prop('disabled', false);
});
});
</script>
.