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

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

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

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

textLocalizations​

Текст ответа на указанном языке. Язык задаётся с помощью объекта Language.

variables['Ответ 5'] = Q[5].textLocalizations[Language.ru];
Q[5].textLocalizations[Language.ru] = 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 = 'Сложно сказать';

settings​

Опции ответа, изменяющие различные его свойства. Принимают и возвращают значения true и false.

примечание

Опции, влияющие на структуру массива, следует включать/выключать в скрипте Подготовка. Если включить, например, флаг С открытым значением (текст) в скрипте перед показом, то текстовое поле в вопросе появится, но введённый текст в массив не попадёт.

  • openValueNum
    с открытым значением (число)
  • openValueTxt
    с открытым значением (текст)
  • multilineTxt
    многострочный текст
  • blocking
    блокирующий / исключающий
  • blockingInTheGroup
    блокирующий в группе
  • alwaysVisible
    всегда отображается
  • disableReordering
    не подлежит рандомизации / ротации
  • disableRepeat
    запрещено использовать в циклах
  • skipExport
    исключить поле при выгрузке
  • skipExportOV
    отключить выгрузку открытого значения
  • hideInRespondentMode
    скрывает ответ, строку или колонку таблицы в режиме просмотра респондентом вопроса на планшете
  • allowFractionalNumbers
    разрешить ввод дробных чисел
  • allowEmptyOpenValue
    разрешить пустые открытые значения
  • hideCode
    не отображать код варианта ответа
  • hideText
    не отображать текст варианта ответа
  • firstColumnBottom
    расположить в первой колонке внизу
  • useDatePicker
    использовать выбор даты
  • useTimePicker
    использовать выбор времени
  • customRowValidation
    проверка ответа скриптами
  • hideInRespondentMode
    скрыть в режиме респондента

Примеры использования:

// Добавить ответу 5 числовое поле
Q[5].settings.openValueNum = true;
// Разрешить его не заполнять
Q[5].settings.allowEmptyOpenValue = true;

// Если у ответа 98 есть текстовое поле…
if (Q[98].settings.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.surveystudio.ru/content/images/ss2_logo_74x74.png';
}

imagePlacement​

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

Q[5].imageUrl = 'https://www.surveystudio.ru/content/images/ss2_logo_74x74.png';
Q[5].imagePlacement = 4;
// или
Q[5].imagePlacement = ImagePlacementIds.Right;

getPosition()​

Возвращает номер позиции ответа в вопросе Ранжирование. Например:

Q.answers[5].getPosition();