Свойства и функции вопроса
Получить доступ к вопросу можно различными методами. Например используя глобальные переменные Q1, Q2 и т.д., или используя объект questions, или просто используя параметр Q, который передается в скрипты перед показом и после ответа на вопрос. Полученный объект содержит различные переменные и функции:
number
Содержит номер вопроса. Только для чтения.
type
Тип вопроса (тип ответа на вопрос). Только для чтения. Содержит число от 1 до 9, которое соответствует одному из вопросов:
- Информация.
- Текстовый.
- Числовой.
- Единственный выбор.
- Множественный выбор.
- Таблица: текст.
- Таблица: числа.
- Таблица: единственный выбор.
- Таблица: множественный выбор.
Вместо чисел можно использовать объект QuestionTypeIds
со следующими свойствами:
- Information - информация,
- Text - текстовый,
- Numeric - числовой,
- SingleChoice - единственный выбор,
- MultipleChoice - множественный выбор,
- Table_Text - таблица: текст,
- Table_Numeric - таблица: числа,
- Table_SingleChoice - таблица: единственный выбор,
- Table_MultipleChoice - таблица: множественный выбор.
Примеры использования:
if (Q.type == 4 || Q.type == QuestionTypeIds.MultipleChoice) { // Что-то сделать }
text
Текст вопроса. Допускается использование html-разметки.
Q.text = 'На <u>прошлой неделе</u> ' + Q.text;
comment
Комментарий для вопроса. Допускается использование html-разметки.
condition
Условие показа вопроса.
flags
Флаги вопроса, изменяющие различные свойства. Представляют собой битовую маску из следующих значений:
- 0x000000
Нет флагов. - 0x000001
Рандомизация вариантов ответа перед показом. - 0x000200
Ротация вариантов ответа перед показом. - 0x000080
Разрешить ввод дробных чисел. - 0x000400
Вертикальный текст в заголовках колонок табличного вопроса. - 0x000800
Не требовать обязательного ответа на вопрос (проверка ответа скриптами). - 0x020000
Для открытого текстового значения использовать выбор даты. - 0x040000
Для открытого текстового значения использовать выбор времени. - 0x008000
Не показывать кнопку "Завершить". - 0x004000
Включить запись GPS-координат. - 0x010000
Включить определения адреса по GPS-координатам. - 0x001000
Включить запись звука. - 0x002000
Не отображать индикатор записи звука (скрытая запись). - 0x100000
Включить возможность добавления подписи к ответу на вопрос (планшеты). - 0x200000
Не требовать обязательного добавления подписи (планшеты). - 0x080000
Разрешить добавление фотографий к ответу на вопрос (на планшетах). - 0x000008
Исключить вопрос при выгрузке. - 0x000020
Оставить выгрузку открытых значений, при исключении выгрузки вопроса. - 0x000040
Выгружать в альтернативном режиме (для множественного выбора). - 0x000004
Выгружать в категориальном режиме.
Вместо чисел можно использовать объект QuestionFlags
со следующими свойствами:
- None
Нет флагов. - RandomizeAnswers
Рандомизация вариантов ответа перед показом. - RotateAnswers
Ротация вариантов ответа перед показом. - AllowFractionalNumbers
Разрешить ввод дробных чисел. - VerticalTextInColumnHeaders
Вертикальный текст в заголовках колонок табличного вопроса. - CustomValidation
Не требовать обязательного ответа на вопрос (проверка ответа скриптами). - UseDatePicker
Для открытого текстового значения использовать выбор даты. - UseTimePicker
Для открытого текстового значения использовать выбор времени. - HideInterruptButton
Не показывать кнопку "Завершить". - EnableGPS
Включить запись GPS-координат. - EnableGeoCoder
Включить определения адреса по GPS-координатам. - EnableAudioRecording
Включить запись звука. - ForceSilentAudioRecording
Не отображать индикатор записи звука (скрытая запись). - EnableSignatureAttachment
Включить возможность добавления подписи к ответу на вопрос (планшеты). - AllowEmptySignature
Не требовать обязательного добавления подписи (планшеты). - EnablePhotoAttachments
Разрешить добавление фотографий к ответу на вопрос (на планшетах). - SkipExport
Исключить вопрос при выгрузке. - KeepExportOV
Оставить выгрузку открытых значений. при исключении выгрузки вопроса. - ExportInAlternativeFlagsMode
Выгружать в альтернативном режиме (для множественного выбора). - ExportInCategoricalMode
Ввыгружать в категориальном режиме.
Флаги, влияющие на структуру массива, следует включать/выключать в скрипте Подготовка. Если включить, например, флаг Исключить вопрос при выгрузке в скрипте перед показом, то в массиве вопрос всё равно будет. Примеры использования:
// Включить рандомизацию и исключить вопрос из массива Q.flags |= 0x00001 | 0x00008; // То же самое: Q.flags |= QuestionFlags.RandomizeAnswers | QuestionFlags.SkipExport;
minAnswerCount
Минимальное количество ответов, которые надо выбрать (для вопросов с множественным выбором).
maxAnswerCount
Максимальное количество ответов, которые можно выбрать (для вопросов с множественным выбором).
columnCount
Количество колонок (используется при отображении вопросов с единственным или множественным выбором). Не используется в табличных вопросах.
openValueNum
Открытое числовое значение для вопросов с типом ответа Числовой. Поддерживает целые и дробные числа.
variables['num'] = Q.openValueNum; Q.openValueNum = 2.5;
openValueInt
Открытое числовое значение, приведенное к целому числу, для вопросов с типом ответа Числовой.
openValueTxt
Открытое текстовое значение для вопросов с типом ответа Текстовый.
variables['txt'] = Q.openValueTxt; Q.openValueTxt = 'Сложно сказать';
isAnswered
Возвращает true, если вопрос считается отвеченным (содержит ответ, который достаточен для перехода на следующий вопрос).
outputColumnTemplate
Шаблон имени переменной для вопроса при выгрузке. Подробнее тут.
outputColumnTemplateOVN
Шаблон имени переменной для открытых числовых значений при выгрузке. Подробнее тут.
outputColumnTemplateOVT
Шаблон имени переменной для открытых текстовых значений при выгрузке. Подробнее тут.
answer
Быстрый доступ к полям ответа для вопросов с числовым или текстовым типом ответа. Например:
var text = Q34.answer.openValueTxt; var num = Q35.answer.openValueNum;
answers
Доступ к вариантам ответа для вопросов с единственным или множественным выбором. Например:
if (Q37.answers[5].checked) { // ... } // также допускается более короткая форма обращения if (Q37[5].checked) { // ... }
rows
Доступ к строкам для табличных вопросов. Например:
if (Q38.rows[5].getCheckedCodes() > 1) { // ... }
columns
Доступ к колонкам (вариантам ответа) для табличных вопросов. Например:
Q38.columns[2].text = 'Лента';
count
Возвращает общее количество вариантов ответа в списке вопроса с единственным или множественным выбором.
visibleCount
Возвращает количество видимых вариантов ответа в вопросе с единственным или множественным выбором. Например:
return Q.visibleCount > 1 ? ok : skip;
hasVisible
Возвращает true, если в вопросе есть хотя бы один видимый вариант ответа или одна строка и одна колонка в табличном вопросе. Например:
return Q.hasVisible ? ok : skip;
categoricalIndexes
Список псевдонимов, применяемых вместо порядкового номера ответа, используемых при формировании имени переменной при выгрузке вопросов с множественным выбором в категориальном режиме. Подробнее тут.
reset()
Сброс всех ответов в изначальное состояние (сбрасывается checked и открытые значения openValueNum/openValueTxt, а также visible становится true у всех вариантов ответов, а также у строк и колонок табличных вопросов).
getAll()
Возвращает все варианты ответа в виде массива. Например:
Q.getAll().forEach(function (a) { a.text = 'Вариант ответа с кодом ' + a.code; });
getCodes()
Возвращает массив кодов всех вариантов ответа.
getVisibleCodes()
Возвращает массив кодов всех видимых вариантов ответа.
getVisible()
Возвращает видимые варианты ответа в виде массива.
getCheckedCodes()
Возвращает массив кодов выбранных вариантов ответа (работает как для единственного, так и для множественного выбора).
getChecked()
Возвращает выбранные варианты ответа в виде массива. Например:
var s = ''; Q.getChecked().forEach(function (a) { s += s.length > 0 ? ', ' : ''; s += a.text; }); variables['checked'] = s;
getCheckedCode()
Возвращает код варианта ответа, который выбран в вопросе с единственным выбором. Если ничего не выбрано - возвращает 0. При вызове для вопроса с множественным выбором, возвратит код первого по порядку выбранного варианта ответа.
isChecked(code)
Возвращает true, если выбран вариант ответа с кодом code.
showAll()
Делает видимыми все варианты ответа в вопросе.
show(code, codes, answer, row, column)
Делает видимыми варианты ответа, коды которых переданы в параметрах. Может принимать 1 код, массив кодов или объект ответа, строки или колонки таблицы. Количество параметров и их порядок значения не имеют. Например:
Q.show(1, [3,5,6], Q.answers[8], Q3.rows[10], Q6.columns[12]); Q.show(Q1.getCheckedCode(), Q2.getCheckedCodes());
showOnly(code, codes, answer, row, column)
Делает видимым только варианты ответа, коды которых переданы в параметрах. Остальные ответы будут скрыты. Может принимать 1 код, массив кодов или объект ответа, строки или колонки таблицы. Количество параметров и их порядок значения не имеют.
showFromTo(codeFrom, codeTo)
Делает видимыми все варианты ответа, коды которых попадают в диапазон от codeFrom до codeTo. Например:
Q.showFromTo(2, 50);
showOnlyFromTo(codeFrom, codeTo)
Делает видимыми только те варианты ответа, коды которых попадают в диапазон от codeFrom до codeTo.
hideAll()
Скрывает все варианты ответа в вопросе. Варианты ответа, у которых установлен флаг Всегда отображается, остаются всегда видимыми.
hide(code, codes, answer, row, column)
Скрывает варианты ответа, коды которых переданы в параметрах. Может принимать 1 код, массив кодов или объект ответа, строки или колонки таблицы. Количество параметров и их порядок значения не имеют.
hideFromTo(codeFrom, codeTo)
Скрывает все варианты ответа, коды которых попадают в диапазон от codeFrom до codeTo.
image
Содержит изображение вопроса, а также позволяет добавить в вопрос изображение из объекта images. Примеры:
Q.image = Q34.image; Q.image = images['Логотип'];
imageUrl
Содержит URL изображения, а также позволяет добавить в вопрос изображение с внешнего сервера по прямой ссылке. Приоритет этого свойства выше свойства image, то есть если они заданы оба, то выполнится только imageUrl. Пример:
if (!Q.imageUrl.length) { Q.imageUrl = 'https://www.survey-studio.com/content/images/ss2_logo_74x74.png'; }
imagePlacement
Содержит код расположения изображения относительно текста, а также позволяет задать расположение картинки. Доступны следующие варианты:
- По умолчанию.
- Над текстом.
- Под текстом.
- Слева от текста.
- Справа от текста.
Помимо числовых кодов, можно использовать объект ImagePlacementIds
, который имеет следующие свойства:
- Default - значение по умолчанию. Расположение задаётся настройками сервера.
- Before - над текстом.
- After - под текстом.
- Left - слева от текста.
- Right - справа от текста.
Q.imageUrl = 'https://www.survey-studio.com/content/images/ss2_logo_74x74.png'; Q.imagePlacement = 4; // или Q.imagePlacement = ImagePlacementIds.Right;
minPhotoCount
maxPhotoCount
Минимальное и максимальное количество фотографий, которые нужно прикрепить к вопросу (если включён соответствующий флаг):
- min = undefined, max = undefined - требуется 1 файл
- min = x, max = undefined - требуется x
- min = undefined, max = y - требуется от 0 до y
- min = x, max = y - требуется от x до y
photoCount
Содержит количество прикреплённых к вопросу файлов. Только для чтения.