如何验证在多选屏幕中至少选择了一个复选框
Posted
技术标签:
【中文标题】如何验证在多选屏幕中至少选择了一个复选框【英文标题】:How to validate that at least one check box is selected in a Multi Select Screen 【发布时间】:2015-07-30 22:11:57 【问题描述】:假设我想在多选屏幕(类型 = 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>
【问题讨论】:
【参考方案1】:在此静态场景中满足您的要求的一种简单方法是使用 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>
【讨论】:
!hasValue (selArray, true) 用于化妆品。除此之外,很好的解决方案。【参考方案2】:您可以将条件定义为:
<condition>getQuestionValueNew() == ""</condition>
因此,当未选择任何内容时,它将返回 true
,如果选择了某些内容,则返回 false
。
【讨论】:
嗯,我试过了,但在我的 android 客户端上,即使我选择了所有可见的复选框,条件也始终为真。 getQuestionValue 的文档并未表明它旨在用于可以进行多项选择的屏幕。 我在 ios 和 Swing 上尝试过,它按预期工作......但如果它不应该在屏幕上使用,可以进行多项选择,Andreas 的回答会更好。以上是关于如何验证在多选屏幕中至少选择了一个复选框的主要内容,如果未能解决你的问题,请参考以下文章
如何验证用户在 CheckBoxList 中选择了至少一个复选框?