- Posts: 13
- Thank you received: 0
Ask the community, share ideas, and connect with other LimeSurvey users!
<script type="text/javascript" charset="utf-8"> $(document).ready(function(){ var thisQuestion = $('#question{QID}'); // Add some classes for manipulation $('tr.subquestions-list', thisQuestion).each(function(i){ $('> *', this).each(function(i){ $(this).addClass('col-'+i+''); }); }); $('.col-2 input[type="text"]', thisQuestion).addClass('final'); $('.col-3 input[type="text"]', thisQuestion).addClass('percent'); $('.col-4 input[type="text"]', thisQuestion).addClass('rating'); // Disable the "Rating" inputs $('input.rating', thisQuestion).prop('disabled', true); // 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(''); } } // Re-enable the "Rating" inputs on submit $('form#limesurvey').submit(function(){ $('input.rating', thisQuestion).prop('disabled', false); }); }); </script>
<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>