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

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

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

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

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

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

let age = Q1.openValueInt;

Q[1].checked = age <= 17;
Q[2].checked = age >= 18 && age <= 24;
Q[3].checked = age >= 25 && age <= 34;
Q[4].checked = age >= 35 && age <= 44;
Q[5].checked = age >= 45 && age <= 54;
Q[6].checked = age >= 55;

return answered;

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

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

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

Пример.

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

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

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

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

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

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

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

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

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

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

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