如何验证在多选屏幕中至少选择了一个复选框

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 方法查看每个答案的“已检查状态”。此方法将返回 truefalse,在我的方法中,我将所有“状态”写入数组并检查是否存在 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】:

您可以将条件定义为:

&lt;condition&gt;getQuestionValueNew() == ""&lt;/condition&gt;

因此,当未选择任何内容时,它将返回 true,如果选择了某些内容,则返回 false

【讨论】:

嗯,我试过了,但在我的 android 客户端上,即使我选择了所有可见的复选框,条件也始终为真。 getQuestionValue 的文档并未表明它旨在用于可以进行多项选择的屏幕。 我在 ios 和 Swing 上尝试过,它按预期工作......但如果它不应该在屏幕上使用,可以进行多项选择,Andreas 的回答会更好。

以上是关于如何验证在多选屏幕中至少选择了一个复选框的主要内容,如果未能解决你的问题,请参考以下文章

如何验证用户在 CheckBoxList 中选择了至少一个复选框?

多选框其他,css基础,选择器基础

如何在引导程序中验证至少标记了一个复选框并将此信息传递给 php?

如何使用ajax制作多选复选框并且没有按钮提交

如何使用选择选项同步 antd 多选表复选框状态

在 reactJS 中验证复选框的简单函数