Paul, I had Zach help me with the same thing a while back and this is the code I have from that. Create your select question with the None and Don't Know options and put this in the footer.
<style>
#[% QuestionName() %]_div {
display: none;
}
.error_quest_highlight2 {
border: 1px solid red !important;
}
</style>
<script>
$(window).on('load', function(){
// Question
var question = $('#[% QuestionName() %]_div').prevAll('.question')[0].id.replace(/_div/, '');
var qdiv = $('#' + question + '_div');
// Move N/A field
$(qdiv).find('.question_body').append($('#[% QuestionName() %]_div .response_row'));
// N/A click event
$(document).on('customGraphicalCheckbox', function(event, graphicalObj, inputObj, bln){
if (inputObj.name.startsWith('[% QuestionName() %]_')) {
// Disable and clear question
if (SSI_GetValue('[% QuestionName() %]_1') || SSI_GetValue('[% QuestionName() %]_2')) {
// Inputs, textareas, selects
$(qdiv).find('input[type=text]').val('').prop('disabled', true);
$(qdiv).find('input[type=tel]').val('').prop('disabled', true);
$(qdiv).find('textarea').val('').prop('disabled', true);
$(qdiv).find('select').val('').prop('disabled', true);
// Graphical radios and checks
$(qdiv).find('input[type=radio]').each(function(){
SSI_RadioReset(this.name);
SSI_DisableGraphicalInput(this.id);
});
$(qdiv).find('input[type=checkbox]').each(function(){
if (this.id != '[% QuestionName() %]_1' && this.id != '[% QuestionName() %]_2') {
SSI_SetSelect(this.id, false);
SSI_DisableGraphicalInput(this.id);
}
});
// Semantic diffs
$(qdiv).find('.ui-slider').each(function(){
$(this).find('input').val('');
$(this).find('.ui-slider-handle').css('left', '50%');
$(this).slider('disable');
});
// Drag-and-drop ranking
$(qdiv).find('.draggable_button').each(function(){
$(this).find('input').val('');
$(this).find('.rank_number').text('');
});
$(qdiv).find('.unranked_sort_area').append($(qdiv).find('.ranked_sort_area .draggable_button'));
$(qdiv).find('.ui-sortable').sortable('option', 'cancel', '.draggable_button');
}
// Enable question
else {
// Inputs, textareas, selects
$(qdiv).find('input[type=text]').prop('disabled', false);
$(qdiv).find('input[type=tel]').prop('disabled', false);
$(qdiv).find('textarea').prop('disabled', false);
$(qdiv).find('select').prop('disabled', false);
// Graphical radios and checks
$(qdiv).find('input[type=radio]').each(function(){
SSI_EnableGraphicalInput(this.id);
});
$(qdiv).find('input[type=checkbox]').each(function(){
if (this.id != '[% QuestionName() %]_1' && this.id != '[% QuestionName() %]_2') {
SSI_EnableGraphicalInput(this.id);
}
});
// Semantic diffs
$(qdiv).find('.ui-slider').each(function(){
$(this).slider('enable');
});
// Drag-and-drop ranking
$(qdiv).find('.ui-sortable').sortable('option', 'cancel', '');
}
}
});
$(document).trigger('customGraphicalCheckbox', [undefined, {name: '[% QuestionName() %]_1'}, SSI_GetValue('[% QuestionName() %]_1')]);
$(document).trigger('customGraphicalCheckbox', [undefined, {name: '[% QuestionName() %]_2'}, SSI_GetValue('[% QuestionName() %]_2')]);
})
function SSI_CustomGraphicalCheckbox(graphicalObj, inputObj, bln) {
$(document).trigger('customGraphicalCheckbox', [graphicalObj, inputObj, bln]);
}
</script>