Here is the code you can add to your free format question in SSI Web:
<style>
.drilldown_clone {
display: none;
}
</style>
<script>
$(document).ready(function(){
var drilldownSettings = {
empty: 1,
disabled: 2,
hidden: 3
}
AddDrilldown('FreeFormatQ_combo1', 'FreeFormatQ_combo2', drilldownSettings.disabled, // when Drilldown1 is unanswered, disable Drilldown2
{ // when Drilldown1 = 1, show the first three options of Drilldown2
when: 1,
then: [1, 2, 3]
}, { // when Drilldown1 = 2, show the middle three options of Drilldown2
when: 2,
then: [4, 5, 6]
}, { // when Drilldown1 = 3, show the last three options of Drilldown2
when: 3,
then: [7, 8, 9]
});
AddDrilldown('FreeFormatQ_combo2', 'FreeFormatQ_combo3', drilldownSettings.disabled,
{ when: 1, then: [1, 2] },
{ when: 2, then: [3, 4] },
{ when: 3, then: [5, 6] },
{ when: 4, then: [7, 8] },
{ when: 5, then: [9, 10] },
{ when: 6, then: [11, 12] },
{ when: 7, then: [13, 14] },
{ when: 8, then: [15, 16] },
{ when: 9, then: [17, 18] });
})
function AddDrilldown(independentDropdown, dependentDropdown) {
// Move dependent dropdown
$('#' + independentDropdown).after($('#' + dependentDropdown));
// Clone
var clone = $('#' + dependentDropdown).clone();
$(clone).attr('id', '');
$(clone).attr('name', '');
$(clone).addClass('drilldown_clone');
$(clone).attr('data-cloneof', dependentDropdown);
$(clone).children('option').removeAttr('selected');
$('#' + dependentDropdown).after(clone);
// CSS
$('#' + independentDropdown + ', #' + dependentDropdown).css('margin', '4px');
$('#' + dependentDropdown).css('width', $(clone).css('width'));
// Change
var args = arguments;
$('#' + independentDropdown).change(function(){
var independentValue = SSI_GetValue(independentDropdown);
var dependentValue = SSI_GetValue(dependentDropdown);
var clone = $('#' + dependentDropdown).siblings('.drilldown_clone[data-cloneof="' + dependentDropdown + '"]');
$('#' + dependentDropdown + ' > option:not(:first-child)').remove();
if (independentValue) {
$('#' + dependentDropdown).prop('disabled', false);
$('#' + dependentDropdown).show();
for (var i = 3; i < args.length; i++) {
var arg = args[i];
if (arg.when == independentValue) {
arg.then.forEach(function(t) {
$('#' + dependentDropdown).append($(clone).children('option[value="' + t + '"]').clone());
if (t == dependentValue) {
$('#' + dependentDropdown).val(t);
}
});
break;
}
}
}
else {
switch (args[2]) {
case 2:
$('#' + dependentDropdown).prop('disabled', true);
break;
case 3:
$('#' + dependentDropdown).hide();
break;
}
}
$('#' + dependentDropdown).change();
});
$('#' + independentDropdown).change();
}
</script>
Be sure to follow the instructions in the link in the comments to make the changes necessary for your situation.