Как проверить, что хотя бы один флажок установлен на экране множественного выбора
Предполагая, что я хочу проверить на экране множественного выбора (type = 4), что установлен хотя бы один флажок. Как мне определить условие соответствующей проверки в следующем примере?
<question title="Preferrable Colors" type="4" key="#1">
<answer nextQuestionKey="END" key="#1_1" position="0">
<text>Pink</text>
</answer>
<answer nextQuestionKey="END" key="#1_2" position="1">
<text>Red</text>
</answer>
<answer nextQuestionKey="END" key="#1_3" position="2">
<text>Violet</text>
</answer>
<text>Select the colors you prefer </text>
<validation type="ERROR">
<condition>true</condition>
<text>Sorry, you have to select at least one color</text>
</validation>
</question>
2 ответа
Решение
Простой способ выполнить ваше требование в этом статическом сценарии - это посмотреть на "проверенное состояние" каждого ответа с помощью метода isAnswerSelectedByClientKey. Этот метод вернет true или false, и в моем подходе я записываю все "состояния" в массив и впоследствии проверяю наличие true.
<question title="Preferrable Colors" type="4" key="#1">
<answer nextQuestionKey="END" key="#1_1" position="0">
<text>Pink</text>
</answer>
<answer nextQuestionKey="END" key="#1_2" position="1">
<text>Red</text>
</answer>
<answer nextQuestionKey="END" key="#1_3" position="2">
<text>Violet</text>
</answer>
<text>Select the colors you prefer </text>
<validation type="ERROR">
<condition>hasValue(selArray, true) == false</condition>
<text>Sorry, you have to select at least one color</text>
</validation>
<onLeaveOkPrepareAssignment>
selArray = null;
selArray['1'] = isAnswerSelectedByClientKey($answer:'#1_1', null);
selArray['2'] = isAnswerSelectedByClientKey($answer:'#1_2', null);
selArray['3'] = isAnswerSelectedByClientKey($answer:'#1_3', null);
</onLeaveOkPrepareAssignment>
</question>
Вы можете определить условие для:
<condition>getQuestionValueNew() == ""</condition>
Поэтому, когда ничего не выбрано, это возвращает true
и если что-то выбрано, оно возвращает false
,