Свойства и функции ответа

Любой вопрос (кроме информационного) содержит варианты ответа, один или несколько. Варианты ответа содержат код, текст и прочие свойства, заданные изначально (например, в редакторе списка вариантов ответа), а также переменные, которые заполняются при получении ответа на вопрос. Доступ к варианту ответа можно получить различными способами, в зависимости от типа вопроса, например:

// вопрос с единственным или множественным выбором
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].asnwers[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;

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

Флаги, изменяющие различные свойства варианта ответа. Представляет собой битовую маску из следующих значений:

0x0000
Нет флагов
0x0001
С открытым значением (число)
0x0002
С открытым значением (текст)
0x0010
Блокирующий / исключающий
0x0008
Всегда отображается
0x0004
Не подлежит рандомизации / ротации
0x0020
Запрещено использовать в циклах
0x0100
Исключить поле при выгрузке
0x0200
Отключить выгрузку открытого значения
0x0800
Разрешить ввод дробных чисел
0x2000
Разрешить пустые открытые значения
0x0400
Не отображать код варианта ответа
0x0040
Не отображать текст варианта ответа
0x0080
Расположить в первой колонке внизу
0x4000
Использовать выбор даты
0x8000
Использовать выбор времени
Вместо чисел можно использовать объект AnswerFlags со следующими свойствами:
  • None - нет флагов,
  • OpenValueNum - с открытым значением (число),
  • OpenValueTxt - с открытым значением (текст),
  • Blocking - блокирующий / исключающий,
  • AlwaysVisible - всегда отображается,
  • DisableReordering - не подлежит рандомизации / ротации,
  • DisableRepeat - запрещено использовать в циклах,
  • SkipExport - исключить поле при выгрузке,
  • SkipExportOV - отключить выгрузку открытого значения,
  • AllowFractionalNumbers - разрешить ввод дробных чисел,
  • AllowEmptyOpenValue - разрешить пустые открытые значения,
  • HideCode - не отображать код варианта ответа,
  • HideText - не отображать текст варианта ответа,
  • FirstColumnBottom - расположить в первой колонке внизу,
  • UseDatePicker - использовать выбор даты,
  • UseTimePicker - использовать выбор времени.
Флаги, влияющие на структуру массива, следует включать/выключать в скрипте Подготовка. Если включить, например, флаг С открытым значением (текст) в скрипте перед показом, то введённого в это поле текста не будет в массиве.
Примеры использования:
// Добавить ответу 5 числовое поле и разрешить его не заполнять
Q.answers[5].flags |= 0x0001 | 0x2000;
// То же самое:
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 = Q34[5].image;
Q[5].image = images['Логотип'];

imageUrl

Содержит URL изображения, а также позволяет добавить ответу изображение с внешнего сервера по прямой ссылке. Приоритет этого свойства выше свойства image, то есть если они заданы оба, то выполнится только imageUrl. Пример:

if (!Q[5].imageUrl.length) {
    Q[5].imageUrl = 'https://survey-studio.com/content/images/ss2_logo_74x74.png';
}

imagePlacement

Содержит код расположения изображения относительно текста, а также позволяет задать расположение картинки. Более подробную информацию можно найти здесь. Примеры:

Q[5].imageUrl = 'https://survey-studio.com/content/images/ss2_logo_74x74.png';
Q[5].imagePlacement = 4;
// или
Q[5].imagePlacement = ImagePlacementIds.Right;


Читайте далее: свойства и функции списка ответов.