I would add this to the constant sum's footer:
<input type="hidden" id="warningShown" value=""/>
Then you can use this custom JavaScript verification:
// Params
var expectedTotal = [% NumericQ %];
var overUnder = 5;
// Run
if (!$('#warningShown').val()) {
var total = 0;
$('input[name="hid_list_[% QuestionName() %]"]').val().split(',').forEach(function(item){
total += SSI_GetValue('[% QuestionName() %]_' + item);
});
if (total < expectedTotal - overUnder || total > expectedTotal + overUnder) {
strErrorMessage = 'Error message...';
$('#warningShown').val(1);
}
}
Line 2 can be updated with the variable with their commute time. Line 3 can be updated with your over-under value.
To handle your doubled-up custom verification, I would place my verification after yours and change my conditional to this:
if (!$('#warningShown').val() && !strErrorMessage) {