I understand the verification behavior. I'm talking about the appearance - the little red boxes.
Skipping that for now, I'd start by setting the select question's footer to this:
<script>
var GLOBAL_[% QuestionName() %]_QUESTIONS;
$(document).ready(function(){
// Parameters
var openEnds = ['oe1', 'oe2', 'oe3', 'oe4', 'oe5'];
// Run
GLOBAL_[% QuestionName() %]_QUESTIONS = openEnds;
$(document).on('lighthouseCheckboxChanged', function(){
var checked;
$('input[name="hid_list_[% QuestionName() %]"]').val().split(',').forEach(function(item){
if (SSI_GetValue('[% QuestionName() %]_' + item)) {
checked = true;
}
});
if (checked) {
openEnds.forEach(function(openEnd){
$('#' + openEnd).val('').prop('disabled', true);
});
}
else {
openEnds.forEach(function(openEnd){
$('#' + openEnd).val('').prop('disabled', false);
});
}
});
})
</script>
Line 6 being the names of the open-end questions.
Then give the select question this verification:
var openEnds = GLOBAL_[% QuestionName() %]_QUESTIONS;
var checked;
$('input[name="hid_list_[% QuestionName() %]"]').val().split(',').forEach(function(item){
if (SSI_GetValue('[% QuestionName() %]_' + item)) {
checked = true;
}
});
if (!checked) {
var answered;
openEnds.forEach(function(openEnd){
if (SSI_GetValue(openEnd)) {
answered = true;
}
});
if (!answered) {
strErrorMessage = 'error message...';
}
}