Свойства и функции ответа
Любой вопрос (кроме информационного) содержит варианты ответа, один или несколько. Варианты ответа содержат код, текст и прочие свойства, заданные изначально (например, в редакторе списка вариантов ответа), а также переменные, которые заполняются при получении ответа на вопрос. Доступ к варианту ответа можно получить различными способами, в зависимости от типа вопроса, например:
// вопрос с единственным или множественным выбором
var a1 = Q23[3];
var a2 = Q23.answers[3];
// числовой или текстовый вопрос
var a3 = Q24.answer;
// табличный числовой или текстовый вопрос
var a4 = Q25.rows[2];
var a5 = Q25.rows[2].answer;
// табличный вопрос с единственным или множественным выбором
var a6 = Q26.rows[4][1];
var a7 = Q26.rows[4].answers[1];
Как и любые другие объекты, ответ содержит различные свойства и функции:
code
Код варианта ответа, заданный при создании варианта ответа в редакторе анкеты. Например:
Q.answers.getCodes().forEach(function (code) {
if (Q[code].code != code) {
// очень странно…
}
});
text
Текст варианта ответа, заданный при создании варианта ответа в редакторе анкеты. Также позволяет изменить этот текст. Примеры:
variables['Ответ 5'] = Q[5].text;
Q[5].text = Q2.getChecked()[0].openValueTxt;
plainText
Текст варианта ответа, очищенный от html-разметки. Только для чтения.
Q[5].text = '<b>Жирный текст</b>';
Q[5].text = Q[5].plainText;
openValueNum
Открытое числовое значение. Используется либо в простом числовом вопросе, либо когда у варианта ответа включено поле для ввода открытого числового значения. Поддерживает целые и дробные числа. Например:
variables['num1'] = Q1.openValueNum;
variables['num2'] = Q2[3].openValueNum;
Q.openValueNum = 2.5;
openValueInt
Открытое числовое значение преобразованное к целому числу. Равно значению указанному в openValueNum, только не допускает указания дробной части.
openValueTxt
Открытое текстовое значение. Используется либо в простом текстовом вопросе, либо когда у варианта ответа включено поле для ввода открытого текстового значения. Например:
variables['txt1'] = Q1.openValueTxt;
variables['txt2'] = Q2[3].openValueTxt;
variables['txt3'] = Q3.rows[1][2].openValueTxt;
Q.openValueTxt = 'Сложно сказать';
flags
Флаги, изменяющие различные свойства варианта ответа. Представляет собой битовую маску, значение которой можно получить через свойства объекта AnswerFlags
:
- None - нет флагов,
- OpenValueNum - с открытым значением (число),
- OpenValueTxt - с открытым значением (текст),
- MultilineTxt - многострочный текст,
- Blocking - блокирующий / исключающий,
- AlwaysVisible - всегда отображается,
- DisableReordering - не подлежит рандомизации / ротации,
- DisableRepeat - запрещено использовать в циклах,
- SkipExport - исключить поле при выгрузке,
- SkipExportOV - отключить выгрузку открытого значения,
- HideInRespondentMode - скрывает ответ, строку или колонку таблицы в режиме просмотра респондентом вопроса на планшете.
- AllowFractionalNumbers - разрешить ввод дробных чисел,
- AllowEmptyOpenValue - разрешить пустые открытые значения,
- HideCode - не отображать код варианта ответа,
- HideText - не отображать текст варианта ответа,
- FirstColumnBottom - расположить в первой колонке внизу,
- UseDatePicker - использовать выбор даты,
- UseTimePicker - использовать выбор времени,
- CustomRowValidation - проверка ответа скриптами,
- HideInRespondentMode - скрыть в режиме респондента.
Флаги, влияющие на структуру массива, следует включать/выключать в скрипте Подготовка. Если включить, например, флаг С открытым значением (текст) в скрипте перед показом, то введённого в это поле текста не будет в массиве. Примеры использования:
// Добавить ответу 5 числовое поле и разрешить его не заполнять
Q[5].flags |= AnswerFlags.OpenValueNum | AnswerFlags.AllowEmptyOpenValue;
// Если у ответа 98 есть текстовое поле…
if (Q[98].flags & AnswerFlags.OpenValueTxt) {
// … что-то сделать
}
checked
Возвращает true, если вариант ответа выбран. Также может использоваться для принудительного выбора варианта ответа скриптом. Например:
if (!Q[4].checked) {
return error('Необходимо выбрать варианты ответа с кодом 4');
}
Q[6].checked = true;
visible
Возвращает true, если вариант ответа отображается. Также может использоваться для принудительного скрытия или показа варианта ответа. Например:
Q[1].visible = false;
exportCodeOverride
Переопределение кода варианта ответа, используемого при выгрузке итогового массива. Подробнее тут.
outputColumnTemplate
Шаблон имени переменной для варианта ответа, при выгрузке массива. Подробнее тут.
outputColumnTemplateOVN
Шаблон имени переменной для числового открытого значения для этого варианта ответа. Подробнее тут.
outputColumnTemplateOVT
Шаблон имени переменной для текстового открытого значения для этого варианта ответа. Подробнее тут.
show()
Делает вариант ответа видимым. Равносильно присваиванию true свойству visible. Например:
Q[5].show();
hide()
Скрывает вариант ответа. Равносильно присваиванию false свойству visible. Например:
Q[5].hide();
image
Содержит изображение ответа, а также позволяет добавить ответу изображение из объекта images. Примеры:
Q[5].image = images['Логотип'];
Q[5].image = Q34[5].image;
imageUrl
Содержит URL изображения, а также позволяет добавить ответу изображение с внешнего сервера по прямой ссылке. Приоритет этого свойства выше свойства image, то есть если они заданы оба, то выполнится только imageUrl. Пример:
if (!Q[5].imageUrl.length) {
Q[5].imageUrl = 'https://www.survey-studio.com/content/images/ss2_logo_74x74.png';
}
imagePlacement
Содержит код расположения изображения относительно текста, а также позволяет задать расположение картинки. Более подробную информацию можно найти здесь. Примеры:
Q[5].imageUrl = 'https://www.survey-studio.com/content/images/ss2_logo_74x74.png';
Q[5].imagePlacement = 4;
// или
Q[5].imagePlacement = ImagePlacementIds.Right;