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

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

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

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