Перейти к основному содержимому

Автоматический выбор ответа по условию

· 3 мин. чтения

В большинстве анкет требуется автоматически проставлять ответы по заданным условиям. Как минимум, обычно нужно относить респондента к какой-либо возрастной категории или выбирать видимый ответ и не показывать вопрос. Конечно, делать это можно и вручную, но зачем, если есть бездушный робот?

Выбор видимого ответа

При показе ранее выбранных ответов бывает нужно автоматически выбирать один ответ, который отображается.

Пример.

Q1. Какие магазины Вы знаете?
НЕСКОЛЬКО ОТВЕТОВ.

1. Магазин 1
2. Магазин 2
3. Магазин 3
97. Никакие [ИСКЛЮЧАЮЩИЙ]

Q2. В каком покупаете чаще?
ОДИН ОТВЕТ. ПОКАЗАТЬ ВЫБРАННОЕ В Q1. ОТМЕТИТЬ САМОСТОЯТЕЛЬНО, ЕСЛИ ЗНАЕТ ОДИН МАГАЗИН.

1. Магазин 1
2. Магазин 2
3. Магазин 3
99. Затрудняюсь ответить [ВСЕГДА ОТОБРАЖАЕТСЯ]

Это можно сделать как действием, так и скриптом перед показом:

  • Показать только варианты ответа, отмеченные в вопросе Q1
  • Выбрать первый по порядку ответ, если видно 2 ответ(а/ов), и пометить как отвеченный
  • Пропустить, если видно 1 вариантов ответа или строк

Здесь важно учесть 2 момента:

  1. Количество ответов, которые отображаются всегда. Прибавьте к нему 1 и пропишите итоговую сумму в действии/скрипте.
  2. Если включена ротация или рандомизация ответов, то у ответов вроде Не знаю должен стоять флаг Не подлежит рандомизации / ротации. Смысл в том, чтобы такой ответ не оказался в начале списка, иначе он может быть выбран.

Кодирование возраста

Если в анкете есть вопрос про возраст респондента (например, числовой Q1) и требуется определить возрастной интервал, то добавьте ещё один вопрос, с единственным выбором и списком интервалов в ответах. Затем добавьте в него действия или скрипт перед показом, скорректировав для вашей задачи:

  • Скрыть все варианты ответа
  • Если Q1(valueNum <= 17), то показать варианты ответа с кодами 1
  • Если Q1(valueNum >= 18 and valueNum <= 24), то показать варианты ответа с кодами 2
  • Если Q1(valueNum >= 25 and valueNum <= 34), то показать варианты ответа с кодами 3
  • Если Q1(valueNum >= 35 and valueNum <= 44), то показать варианты ответа с кодами 4
  • Если Q1(valueNum >= 45 and valueNum <= 54), то показать варианты ответа с кодами 5
  • Если Q1(valueNum >= 55), то показать варианты ответа с кодами 6
  • Выбрать первый по порядку ответ, если видно 1 ответ(а/ов), и пометить как отвеченный

Интервалы в вариантах ответа должны совпадать с интервалами в действиях или скрипте, в том числе их количество, иначе может получиться путаница в массиве.

Выбор ответа, если выбран какой-то другой ответ

Например, есть задача: автоматически выбрать ответ 3 и не задавать вопрос, если в Q1 выбран ответ 2 и одновременно в Q2 — 99. Это делается таким скриптом перед показом:

if (calc('Q1 = 2 and Q2 = 99')) {
Q[3].checked = true;
return answered;
}