Responses that should not be filtered
You do not have to allow all responses in a list to be filtered. If a response list contains an Other category, for example, you might not want that response to be affected by filtering that omits responses not chosen.
Syntax
To mark a response as being unfiltered, add nofilter to its definition as follows:
<response_name> ["<response_text>"] nofilter
Filtering completely ignores responses marked in this way, so the question that uses the filtered list will always include the unfiltered responses in its response list regardless of whether or not the response was chosen at a previous question.
The na, dk, and ref responses have nofilter applied automatically. If you want them to be filtered the same as ordinary responses, include canfilter in the response definition. canfilter is automatically applied when the na, dk, and ref responses are used as loop iterations.
Example
In the following example, the metadata defines three questions: the first uses the full list of insurance products, the second uses only those products not mentioned at HasInsurance, and the third uses only products mentioned at EnquiredThisYear. To offer respondents the chance of mentioning an unlisted product, saying don't know, or not answering, those responses are marked with nofilter.
InsProducts define
{
Life,
CriticalIllness "Critical illness",
Buildings,
Contents,
Mortgage "Mortgage protection",
Income "Income protection",
Travel,
OtherInsProducts "Other insurance products" other nofilter,
NoInsProducts "None" na,
DkInsProducts "Can't remember / Don't know" dk
};
HasInsurance "Which types of insurance do you currently have?"
categorical [1..]
{
use InsProducts
};
EnquiredThisYear "And are there any other types of insurance
that you have considered buying in the past year or that you
are considering buying now?" categorical [1..]
{
use InsProducts
};
GotQuote "And of those products that you considered or are
considering buying, for which ones did you request a
quotation?" categorical [1..]
{
use InsProducts
};
The routing is:
HasInsurance.Ask()
EnquiredThisYear.Categories.Filter = _
EnquiredThisYear.DefinedCategories() - HasInsurance.Response.Value
EnquiredThisYear.Ask()
GotQuote.Categories.Filter = EnquiredThisYear.Response.Value
GotQuote.Ask()
If the respondent has life, travel, and health (other) insurance, the response list for EnquiredThisYear includes all the listed products except life and travel. It also includes Other because it is ignored by the filter, as well as None and Don't know which filtering always ignores.
If the respondent has asked about buildings, contents, and car (other) insurance, the response list for GotQuote contains those items. It also includes None and Don't know because they are ignored by the filter.
If you want to use something similar in your own surveys, you might want to change the example so that it does not ask
GotQuote if the respondent did not make any insurance enquiries (you could put the question in an
If statement or set its
MustAnswer property to False). You can use text substitution to display the text of any Other answers in the
EnquiredThisYear and
GotQuote response lists. For more information, see
Variable response texts.
See also