You can achieve this behaviour with JavaScript:
1) Place this small plugin at the end of
template.js. The plugin interrupts the next/submit process and checks for rows with single answers. If found, a class is applied to that row, an alert is popped up and the next/submit process is aborted.
Code:
// A jQuery plugin ensure that there are no rows with single answers
(function( $ ){
$.fn.lsHandleArray = function(options) {
var opts = $.extend( {
alertText: 'Please complete the indicated rows.'
}, options);
return this.each(function() {
var thisQuestion = $(this);
// Interrupt the Next/Submit click
$('#movenextbtn, #movesubmitbtn').bind('click', function () {
// Reset
$('tr.answers-list', thisQuestion).removeClass('invalid-answer');
// Loop through the array rows
$('tr.answers-list', thisQuestion).each(function(i) {
if($('input.radio:checked', this).length == 1) {
$(this).addClass('invalid-answer');
}
});
// Pop up alert and abort submit if invalid rows found
if($('tr.invalid-answer', thisQuestion).length > 0) {
alert(opts.alertText);
$('#movenextbtn, #movesubmitbtn').blur();
return false;
}
});
});
};
})( jQuery );
2) Place something like this at the end of
template.css to highlight the invalid rows.
Code:
tr.invalid-answer {
background: pink;
}
3) Place this in the source of every question you want to apply the plugin to:
Code:
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
$('#question{QID}').lsHandleArray({alertText: 'Please complete the indicated rows.'});
});
</script>
Regarding your question about finding all of the array-dual-scale questions - you can search the
Survey Logic File
for all instances of "Array dual scale".